SQL Server中如何根据日期列判断对应星期几
如何通过SQL日期列判断对应星期几?
当然可行啦!针对你创建的临时测试表,我们可以用SQL Server自带的日期函数轻松实现提取星期几的需求,下面给你具体的实现方法:
方法一:更新已有数据的Day列
你已经创建了包含IncidentDate和Day列的临时表,并且插入了日期数据,现在可以用DATENAME()函数直接更新Day列,获取星期的全称:
UPDATE #Date SET [Day] = DATENAME(WEEKDAY, IncidentDate)
DATENAME(WEEKDAY, 日期列)会根据服务器的语言设置返回对应的星期名称,比如服务器是中文环境会返回“星期四”,英文环境则返回“Thursday”。
方法二:插入数据时直接计算星期几
如果不想先插入日期再更新,也可以在插入数据的同时直接计算并填充Day列:
INSERT INTO #Date (IncidentDate, [Day]) VALUES ('20170803', DATENAME(WEEKDAY, '20170803')), ('20170817', DATENAME(WEEKDAY, '20170817')), ('20170831', DATENAME(WEEKDAY, '20170831')), -- 其他日期依此类推
方法三:自定义星期名称(不受服务器语言影响)
如果想要固定返回特定语言的星期名称,比如不管服务器设置如何都返回中文星期,可以用CASE语句配合DATEPART()函数实现:
UPDATE #Date SET [Day] = CASE DATEPART(WEEKDAY, IncidentDate) WHEN 1 THEN '星期日' WHEN 2 THEN '星期一' WHEN 3 THEN '星期二' WHEN 4 THEN '星期三' WHEN 5 THEN '星期四' WHEN 6 THEN '星期五' WHEN 7 THEN '星期六' END
这里要注意:DATEPART(WEEKDAY, 日期)返回的数字范围是1-7,默认情况下,英文环境中1代表星期日,中文环境中1代表星期一。如果需要统一规则,可以先执行SET LANGUAGE Simplified Chinese;来确保数字对应的星期符合中文习惯。
内容的提问来源于stack exchange,提问作者JM1
相关产品推荐
相关产品推荐

