如果我有一个日期01/01/2009,我想知道它是哪一天,例如星期一,星期二,等等。
在SQL Server 2005/2008中有内置函数吗?或者我需要使用辅助桌吗?
如果我有一个日期01/01/2009,我想知道它是哪一天,例如星期一,星期二,等等。
在SQL Server 2005/2008中有内置函数吗?或者我需要使用辅助桌吗?
当前回答
要获得给定日期的星期几的确定值,可以使用DATEPART()和@@datefirst的组合。否则你将依赖于服务器上的设置。
请访问以下网站寻找更好的解决方案: MS SQL:星期的一天
然后,星期几将在0到6的范围内,其中0是星期天,1是星期一,等等。然后可以使用简单的case语句返回正确的工作日名称。
其他回答
欧洲:
declare @d datetime;
set @d=getdate();
set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);
另外,以上所有答案中,dw代表Week Day
SELECT DATENAME(WEEKDAY,GETDATE()) AS WeekDay
or
SELECT DATENAME(W,GETDATE()) AS WeekDay
在SQL Server 2012及以后的版本中,您可以使用FORMAT函数
SELECT FORMAT(GETDATE(), 'dddd')
SELECT CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN 'SUNDAY'
WHEN 2 THEN 'MONDAY'
WHEN 3 THEN 'TUESDAY'
WHEN 4 THEN 'WEDNESDAY'
WHEN 5 THEN 'THURSDAY'
WHEN 6 THEN 'FRIDAY'
WHEN 7 THEN 'SATURDAY'
END
使用DATENAME或DATEPART:
SELECT DATENAME(dw,GETDATE()) -- Friday
SELECT DATEPART(dw,GETDATE()) -- 6