我想将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'
。
答案 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 )