如果我有一个日期01/01/2009,我想知道它是哪一天,例如星期一,星期二,等等。
在SQL Server 2005/2008中有内置函数吗?或者我需要使用辅助桌吗?
如果我有一个日期01/01/2009,我想知道它是哪一天,例如星期一,星期二,等等。
在SQL Server 2005/2008中有内置函数吗?或者我需要使用辅助桌吗?
当前回答
欧洲:
declare @d datetime;
set @d=getdate();
set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);
其他回答
欧洲:
declare @d datetime;
set @d=getdate();
set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);
要获得给定日期的星期几的确定值,可以使用DATEPART()和@@datefirst的组合。否则你将依赖于服务器上的设置。
请访问以下网站寻找更好的解决方案: MS SQL:星期的一天
然后,星期几将在0到6的范围内,其中0是星期天,1是星期一,等等。然后可以使用简单的case语句返回正确的工作日名称。
这是一个工作副本的我的代码检查它,如何从日期检索日期名称在SQL
CREATE Procedure [dbo].[proc_GetProjectDeploymentTimeSheetData]
@FromDate date,
@ToDate date
As
Begin
select p.ProjectName + ' ( ' + st.Time +' '+'-'+' '+et.Time +' )' as ProjectDeatils,
datename(dw,pts.StartDate) as 'Day'
from
ProjectTimeSheet pts
join Projects p on pts.ProjectID=p.ID
join Timing st on pts.StartTimingId=st.Id
join Timing et on pts.EndTimingId=et.Id
where pts.StartDate >= @FromDate
and pts.StartDate <= @ToDate
END
在SQL Server 2012及以后的版本中,您可以使用FORMAT函数
SELECT FORMAT(GETDATE(), 'dddd')
另外,以上所有答案中,dw代表Week Day
SELECT DATENAME(WEEKDAY,GETDATE()) AS WeekDay
or
SELECT DATENAME(W,GETDATE()) AS WeekDay