Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何编写带有日期范围的case语句_Sql_Sql Server - Fatal编程技术网

Sql 如何编写带有日期范围的case语句

Sql 如何编写带有日期范围的case语句,sql,sql-server,Sql,Sql Server,我正在尝试根据a datetime值返回季度 以下脚本出现错误: 结果将varchar数据类型转换为datetime数据类型 在超出范围的值中 使用一个“WHEN”子句似乎可以很好地工作,但使用4则会产生错误 原因是什么?没有2017-06-31这样的日期。应该是2017-06-30。没有2017-06-31这样的日期。应该是2017-06-30。错误是因为6月和9月只有30天,但您要求的是第31天 另外,您最后一次的WHE声明是一年后的。错误是因为六月和九月只有30天,但您要求的是第31天 另

我正在尝试根据a datetime值返回季度

以下脚本出现错误:

结果将varchar数据类型转换为datetime数据类型 在超出范围的值中

使用一个“WHEN”子句似乎可以很好地工作,但使用4则会产生错误


原因是什么?

没有2017-06-31这样的日期。应该是2017-06-30。

没有2017-06-31这样的日期。应该是2017-06-30。

错误是因为6月和9月只有30天,但您要求的是第31天


另外,您最后一次的WHE声明是一年后的。

错误是因为六月和九月只有30天,但您要求的是第31天


另外,您的最后一次when声明是一年后的声明。

您有一个内置的方法:

SELECT DATEPART(QUARTER, @d)

您有一个内置的方法:

SELECT DATEPART(QUARTER, @d)

明年你会做什么?我认为最好使用内置方法,这样就不需要每年重写查询。请参考我的回答以及你明年将做什么?我认为最好使用内置方法,这样就不需要每年重写查询。请参考我的答案