【发布时间】:2018-12-14 14:42:20
【问题描述】:
我已经解决了之前的问题,谢谢。但是,我仍然对以下内容有疑问(之前的一部分)。由于 DATETIME 不支持“0001-01-01”,如何将结果转换为 DATE 数据类型?我已经尝试过 DATETIME2 但不起作用,并且 StartDate 需要为“0001-01-01”。非常感谢任何帮助。
声明@CurrentDate DATE = '0001-01-01'
选择 DATEADD(QQ, DATEDIFF(QQ, 0, @CurrentDate), 0) AS FirstDayOfQuarter, DATEADD(QQ, DATEDIFF(QQ, -1, @CurrentDate), -1) AS LastDayOfQuarter, CONVERT(VARCHAR(10), DATEADD(WEEK, DATEDIFF(WEEK, 0, DATEADD(DAY, (6- DATEPART(DAY, @CurrentDate)), @CurrentDate)),0),120) AS 第一个星期一
错误信息:
将日期数据类型转换为日期时间数据类型导致值超出范围。
【问题讨论】:
-
请添加
#DimDate表的架构 -
您的
SELECT实际运行 (sqlfiddle.com/#!18/9eecb/23758)。据推测,您的表中有一个datetime数据类型。 -
如果您确实需要存储未填充的日期,请改用可空类型。
-
要回应@GordonLinoff 所说的内容,您需要将
datetime-type 列切换到datetime2-type 列(或者可能更合适)。虽然我很好奇日期时间类型列在日期维度中的作用......
标签: sql sql-server sql-server-2017