将日期转换为星期几到SQL Server

时间:2014-07-03 17:28:37

标签: sql-server ms-access

我想将MS Access中的SQL查询转换为SQL Server。此查询是关于将日期转换为星期几。请指教。

MS Access:

UPDATE Contact_Hist 
SET WK_DAY = weekdayname(weekday(cdate(mid(date_id,5,2) & "/" & right(date_id,2) & "/" & left(date_id,4))));

例如,DATE_ID = 20140703根据表格(Contact_Hist),并希望转换为星期几,即'Thursday'

2 个答案:

答案 0 :(得分:2)

您应该使用SQL Server的DatePart()函数:

DatePart(weekday, Cast('20140703' AS date))

这将返回1(星期一)到7(星期日)之间的整数。

<子> <强>&LT;编辑&gt;

要获取星期几的名称,请使用DateName()功能。

DateName(weekday, Cast('20140703' AS date))

出于参考目的,DatePart()DateName()都采用“日期”(即时间日期 smalldatetime datetime datetime2 datetimeoffset 值)作为第二个参数。 SQL Server会隐式将日期字符串转换为日期,因此CAST('20140703' AS date)

<子>&LT; /编辑&gt;

答案 1 :(得分:1)

在MS SQL Server 2012中,您可以执行以下操作并返回“星期五”:

SELECT DATENAME ( weekday , '20140704' )

如此SQLFiddle所示:http://sqlfiddle.com/#!6/fc24a/8


所以:

UPDATE Contact_Hist SET WK_DAY = DATENAME ( weekday , date_id )