我正在尝试获取给定日期的日期名称,例如星期五、星期六、星期日、星期一等。我知道有一个内置函数可以返回日期名称,例如:
SELECT DATENAME(dw,'09/23/2013') as theDayName
此 SQL 查询返回:
“星期一”
这一切都OK。但我想单独传递月、日和年
。
我正在使用内置的 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。我在这里错过了什么吗?
请指教。
最佳答案
经过测试并适用于 SQL 2005 和 2008。不确定这是否适用于 2012 年及更高版本。
该解决方案使用 DATENAME 而不是 DATEPART
select datename(dw,getdate()) --Thursday
select datepart(dw,getdate()) --2
这也是 sql 2014 中的工作。
关于sql - 在 SQL Server 中分别从给定的月、日和年获取星期几名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106871/