3
A
回答
2
您可以動態地做到這一點是這樣的:
WITH Dates AS (
SELECT CONVERT(DATE, getdate()) as [Date]
UNION ALL
SELECT DATEADD(DAY, 1, [Date])
FROM Dates
where Date < dateadd(yy, 10, getdate())
)
SELECT [Date]
FROM Dates
OPTION (MAXRECURSION 4000)
+0
我幾乎可以確定你的意思是'CONVERT(DATE,getdate())'。 – 2011-05-16 22:25:53
+0
@Andriy M是的,對於SQL Server 2008來說這更好 – RedFilter 2011-05-17 15:22:32
0
試試這個版本(地板的日期時間,並增加了所有需要的列):
;WITH Dates AS (
SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),0) as DateOf,
CASE WHEN datename(weekday,getdate()) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,getdate()) DayOfWeekName
UNION ALL
SELECT DateOf+1,
CASE WHEN datename(weekday,DateOf+1) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,DateOf+1) DayOfWeekName
FROM Dates
where DateOf < dateadd(yy, 10, getdate())
)
SELECT DateOf,DayType,DayOfWeekName
FROM Dates
OPTION (MAXRECURSION 4000)
插入到表試試這個:
DECLARE @DateTable table (DateOf datetime, DayType char(7), DayOfWeekName varchar(10))
;WITH Dates AS (
SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),0) as DateOf,
CASE WHEN datename(weekday,getdate()) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,getdate()) DayOfWeekName
UNION ALL
SELECT DateOf+1,
CASE WHEN datename(weekday,DateOf+1) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,DateOf+1) DayOfWeekName
FROM Dates
where DateOf < dateadd(yy, 10, getdate())
)
INSERT INTO @DateTable (DateOf,DayType,DayOfWeekName)
SELECT DateOf,DayType,DayOfWeekName
FROM Dates
OPTION (MAXRECURSION 4000)
從@DateTable中選擇排名前10位*
OTUPUT:
DateOf DayType DayOfWeekName
----------------------- ------- -------------
2011-05-16 00:00:00.000 WeekDay Monday
2011-05-17 00:00:00.000 WeekDay Tuesday
2011-05-18 00:00:00.000 WeekDay Wednesday
2011-05-19 00:00:00.000 WeekDay Thursday
2011-05-20 00:00:00.000 WeekDay Friday
2011-05-21 00:00:00.000 Weekend Saturday
2011-05-22 00:00:00.000 Weekend Sunday
2011-05-23 00:00:00.000 WeekDay Monday
2011-05-24 00:00:00.000 WeekDay Tuesday
2011-05-25 00:00:00.000 WeekDay Wednesday
(10 row(s) affected)
0
我apporached這是一個符合表問題。我使用Master的spt_values作爲我的理貨表。它只能達到2048年,這是足夠5.5年的數據。您可以根據需要創建自己的理貨表。
Declare @startDate Date = '1/1/2011';
SELECT DateAdd(d, number, @startDate) [Date],
CASE WHEN DATEPART(dw, DateAdd(d, number, @startDate)) IN (1,7) THEN 'Weekend' ELSE 'Weekday' END [WeekDayEnd],
DateName(weekday, DateAdd(d, number, @startDate)) DayOfWeek
FROM spt_values
WHERE type = 'P';
這得到以下結果:
Date WeekDayEnd DayOfWeek
2011-01-01 Weekend Saturday
2011-01-02 Weekend Sunday
2011-01-03 Weekday Monday
2011-01-04 Weekday Tuesday
2011-01-05 Weekday Wednesday
2011-01-06 Weekday Thursday
2011-01-07 Weekday Friday
2011-01-08 Weekend Saturday
2011-01-09 Weekend Sunday
2011-01-10 Weekday Monday
0
使用本
set nocount on
SET DATEFIRST 7;
go
select date,
datename(dw,datepart(dw,date)) Day,
datepart(dw,date) Day,
'Segment' = case
when datepart(dw,date)in (5,6) then 'WEEK_END' else 'Week_day' end
from calenderdate
set nocount off
> set nocount on > > select date, > substring(cast(datename(dw,datepart(dw,date))as > varchar(10)),1,3) Day, 'Segment' = > case when datepart(dw,date)in (5,6) > then 'WEEK_END' else 'Week_day' end > from calenderdate > > set nocount off
輸出
1/1/2011星期一7 Week_day 1/2/2011星期一1 Week_day
相關問題
- 1. 如何使用日曆創建日期
- 2. 無復發結束日期創建日曆事件失敗
- 3. 創建日曆
- 4. 我的日曆的日曆日期爲
- 5. 創建日曆表
- 6. Java,創建日曆
- 7. glyphicon日曆開始和結束日期
- 8. 如何創建一個單日曆日曆作爲scooll日曆
- 9. 從WPF日曆中刪除日期限制日期集合
- 10. sql最大日期從結果集
- 11. 按日期過濾Outlook日曆API結果
- 12. 在Android的特定日期創建日曆事件?
- 13. 在SELECT上創建日曆日期範圍的重複記錄
- 14. 在Excel中創建一個包含日曆日期的列
- 15. 用戶如何在我的日曆(java)中創建日期?
- 16. 使用DialopFragment創建的日期選擇器顯示日曆也
- 17. 創建具有特定日期和時間的日曆
- 18. C#使用EWS創建日曆項目,如何找回結果?
- 19. 帶有過期日期的新日曆的PHP日曆
- 20. 不同日曆的日期
- 21. Java中的日期/日曆
- 22. 大膽的日曆日期
- 23. 清除結束日期中的早期日期使用ajaxControlToolkit的日曆:calendarExtender
- 24. PHP日曆IF日期與日期
- 25. 嘗試使用日期選擇器創建事件日曆javascript
- 26. 從字符串日期創建日曆,不知道格式
- 27. 谷歌日曆備份不保存事件創建日期
- 28. 以回曆日期格式顯示日期的日曆
- 29. 將日期添加到開始日期以創建和結束日期
- 30. 錯誤的日期()結果
確定您需要記錄?也許與..不存在..會給你你想要的結果。 – Teson 2011-05-16 18:48:37