我正在尝试从给定的日期字段中获取日期编号和名称 但结果令人困惑 例如以下sql:
declare @date date = '20161018'
select datepart(dw, @date) as daynumber,
datename(weekday, @date) as DayName,
datename(weekday, 3) as DayNumber3,
datename(weekday, 1) as DayNumber1
它产生了这个结果:
daynumber DayName DayNumber3 DayNumber1
3 Tuesday Thursday Tuesday
正如您所看到的,datepart返回3,当我在datename调用中使用此datepart时,它返回Tuesday
。
但是当我使用数字3直接调用datepart时,它返回Thursday
,当我使用数字1直接调用datepart时,它返回Tuesday
那么为什么datepart(dw, @date)
返回3而不是1,而datename(weekday, @date)
确实返回正确的日期名称?
对我来说,重要的是得到1而不是3,并且在这个日期仍然保持到星期二。
修改
我想要的输出是' 20161018'是
daynumber DayName
1 Tuesday
如何从我的示例中获取该日期的结果?
答案 0 :(得分:1)
我认为你可以添加5和mod 7将获得如下结果:
Declare @date date = '20161018'
Select (datepart(dw, @date) + 5) % 7 as daynumber,
datename(weekday, @date) as DayName,
datename(weekday, 3) as DayNumber3,
datename(weekday, 1) as DayNumber1