【发布时间】:2013-06-30 19:18:00
【问题描述】:
我试图在表格中坚持日期是周末。
ADD [IsWeekEnd] AS
(CASE DATEPART(dw, GETDATE())
WHEN 1 THEN 1
WHEN 6 THEN 1
ELSE 0 END) PERSISTED
ADD [IsWeekEnd] AS
(CASE SUBSTRING(DATENAME(dw, GETDATE()), 1, 3)
WHEN 'Sun' THEN 1
WHEN 'Sat' THEN 1
ELSE 0 END) PERSISTED
T-SQL 不允许我这样做,因为 DatePart(dw, date) 是一个非确定性函数。
消息 4936,第 16 级,状态 1,第 2 行
无法保留表“PowerUsage”中的计算列“IsWeekEnd”,因为该列是不确定的。
但实际上,2013 年 7 月 1 日是星期一。所以从技术上讲,它应该通过某种方法来确定。
T-SQL 不允许我使用上面的原因是您可以使用
更改一周的开始日期SET DATEFIRST
然后我认为日期之间的天数可能会起作用,但我也遇到了同样的问题!
ADD [IsWeekEnd] AS
(CASE WHEN DATEDIFF(DAY, '20070101', [datetime]) % 7 > 4
THEN 1
ELSE 0 END) PERSISTED
还有其他方法吗?
克里斯
【问题讨论】:
标签: sql-server tsql date persistence weekend