![](/img/trans.png)
[英]SQL Server 2008 - how to export/backup the last 3 months of data from the database?
[英]Get Mondays of the last two months from SQL Server 2008
如果今天是2015年7月10日,那么我需要的是SQL Server中的記錄集,該記錄集包含以下記錄
6 JULY 2015
29 JUNE 2015
22 JUNE 2015
15 JUNE 2015
8 JUNE 2015
1 JUNE 2015
25 MAY 2015
嘗試這個
;WITH dates AS
(
SELECT CONVERT(datetime,cast(month(getdate())-2 as varchar(2))+'/'+cast(day(getdate()) as varchar(2))+'/'+ cast(year(getdate()) as varchar(4))) as Date,' ' as eid
UNION ALL
SELECT DATEADD(d,1,[Date]),' ' as eid
FROM dates
WHERE DATE < GETDATE()
)
select datename(DD,dates.date)+' '+datename(MM,dates.date)+' '+ datename(YYYY,dates.date) from dates
where datename(dw,dates.date) = 'Monday'
使用以下表達式,您可以獲得最后一個星期一:
CAST(GETDATE()-(@@DATEFIRST-1+DATEPART(weekday,GETDATE())) % 7+1 AS DATE)
在這里,我們使用@@ DATEFIRST和DATEPART(weekday,...)查找最后一個星期一。
然后,您應該生成8天(兩個月)的行序列,每行的天數為下一天的-7天。 在這里,我使用了CTE,但是您可以使用DB表中現有(系統或用戶)的UNION或TOP 8行來生成8行。
;WITH CT(n) AS
(
SELECT 0
UNION ALL
SELECT n+1 FROM CT WHERE n < 7
)
SELECT DATEADD(DAY,-n*7,
CAST(GETDATE()-
(@@DATEFIRST-1+DATEPART(weekday,GETDATE())) % 7+1 AS DATE)) as DT
FROM CT ORDER BY n
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.