我正在尝试根据日期时间值返回季度。
我收到以下脚本的错误:
导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
DECLARE @d AS DATETIME
SET @d = GETDATE()
SELECT CASE
WHEN @d BETWEEN '2017-01-01' AND '2017-03-31' THEN 'Q1'
WHEN @d BETWEEN '2017-04-01' AND '2017-06-31' THEN 'Q2'
WHEN @d BETWEEN '2017-07-01' AND '2017-09-31' THEN 'Q3'
WHEN @d BETWEEN '2017-10-01' AND '2018-12-31' THEN 'Q4'
ELSE 'Q?'
END
使用单个“WHEN”子句似乎可以正常工作,但是使用4则会出错。
是什么原因?
答案 0 :(得分:4)
你有一个内置的方法:
SELECT DATEPART(QUARTER, @d)
答案 1 :(得分:1)
错误是因为六月和九月只有30天,但你要求他们的第31天。
另外,你的最后一次发言是一年假。
答案 2 :(得分:0)
2017-06-31没有这样的日期。应该是2017-06-30。