sql - 在 SQL Server 中分别从给定的月、日和年获取星期几名称

标签 sql sql-server function date

我正在尝试获取给定日期的日期名称,例如星期五、星期六、星期日、星期一等。我知道有一个内置函数可以返回日期名称,例如:

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/

相关文章:

php - SQL 语句不会限制。显示没有结果

sql - 我们还应该在 Golang 中关闭 DB 的 .Prepare() 吗?

sql-server - 使用聚合函数在同一张表上进行两次内部连接

sql - 报表的多连接SQL查询优化

python - Python 3 中的 def 函数语法错误

sql - 如何插入 SQL Server 中现有的临时表

SQL 使用 max() 进行多个内连接以获取最新记录的条目

mysql - 将 Float 转换为 Double 会给出错误的值

javascript - 为什么我可以输入一个量表上的参数?

c++ - 指向函数 C++ 的指针数组