2009-12-07 52 views
2

請讓我知道如果在給定日期是星期日,我該如何找到它?在T-SQL中查找日期

編輯:

從回答另一件事在我腦海中:如何找到什麼是一週的第一天?

回答

3

使用 「DATENAME」 功能:

print datename(weekday, '11/29/2009') 

或一個變量:

declare @date smalldatetime 
set @date = '12/25/2008' 
select datename(weekday, @date) 
+0

請參閱MSDN參考DATENAME函數 - http://msdn.microsoft.com/en-us/library/ms174395.aspx – kristian 2009-12-07 06:15:20

2
SELECT DATEPART(dw,theDateRow) AS dateOfWeek FROM someTable 

DW代表工作周

如果DW = 0,這是星期天。

+4

dw = 0是星期天不一定是真的,它取決於你設置爲DATEFIRST(http://msdn.microsoft.com/en-us/library/ms181598.aspx) – kristian 2009-12-07 06:16:27

0

A)週日檢查

SELECT 
CASE WHEN DATENAME(WEEKDAY, GETDATE()) != 'Sunday' 
    Then 'It is ' + CAST(DATENAME(WEEKDAY, GETDATE()) AS VARCHAR(10)) 
    Else 'It is ' + CAST(DATENAME(WEEKDAY, GETDATE()) AS VARCHAR(10)) 
END 'Day is' 

輸出:

Day is 
It is Saturday 

B)查找第一個星期

SELECT 
DayName = DATENAME(WEEKDAY, 
     DATEADD(DD, 1 - DATEPART(DW, CONVERT(VARCHAR(10), GETDATE(), 111)), 
     CONVERT(VARCHAR(10), GETDATE(), 111))), 
Date = DATEADD(DD, 
     1 - DATEPART(DW, CONVERT(VARCHAR(10), GETDATE(), 111)), 
       CONVERT(VARCHAR(10), GETDATE(), 111)) 

輸出:

DayName Date 
Sunday 2009-12-27 00:00:00.000 
0

要了解什麼是一週的第一天,你使用:

打印@@ datefirst

這將返回從1到7的數字,其中1 =星期一,2 =星期二... 7 =星期日。您可以通過改變什麼被認爲是本週(從SQL實例)的第一天:

設置DATEFIRST = 1

這將第一天設置爲Monday。默認情況下,SQL在美國設置爲7(星期日)。