【发布时间】:2013-12-05 02:10:50
【问题描述】:
我正在尝试从给定日期获取日期名称,例如星期五、星期六、星期日、星期一等。我知道有一个内置函数可以返回日期名称,例如:
SELECT DATENAME(dw,'09/23/2013') as theDayName
此 SQL 查询返回:
'星期一'
这一切都好。但我想单独通过Month, Day and Year。
我正在使用内置的 DATEPART 函数从日期中检索月、日和年,以便将其传递给 DATENAME 函数:
SELECT DATEPART(m, GETDATE()) as theMonth -- returns 11
SELECT DATEPART(d, GETDATE()) as theDay -- returns 20
SELECT DATEPART(yy, GETDATE()) as theYear -- returns 2013
现在我分别拥有月、日、年值,我将其传递给我的DATENAME 以获取我想要的日期的Weekname:
--my SQL query to return dayName
SELECT (DATENAME(dw, DATEPART(m, GETDATE())/DATEPART(d, myDateCol1)/ DATEPART(yy, getdate()))) as myNameOfDay, FirstName, LastName FROM myTable
这会返回错误的日期名称。我尝试将 / 替换为 - 以便在 DATENAME 函数中我的 SQL 查询变为:
SELECT DATENAME(dw,'09/23/2013')
--becomes
SELECT DATENAME(dw,'09-23-2013')
但它仍然从我的 SQL 查询中返回不正确的 dayName。我在这里错过了什么吗?
请指教。
【问题讨论】:
-
请注意
select @@DATEFIRST设置为SET DATEFIRST 7;
标签: sql sql-server function date