Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 datediff(分钟,23:30,24:00)错误_Sql - Fatal编程技术网

Sql datediff(分钟,23:30,24:00)错误

Sql datediff(分钟,23:30,24:00)错误,sql,Sql,在SQL 2008中,为什么执行此操作时会出现错误: select datediff (minute, '23:30','24:00') 错误是: Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string. 即使我将24:00更改为00:00为什么结果显示-1410 请问我可以使用哪些替代方案?如果您要查找“23:30”和“24:00

在SQL 2008中,为什么执行此操作时会出现错误:

select datediff (minute, '23:30','24:00') 
错误是:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
即使我将
24:00
更改为
00:00
为什么结果显示
-1410


请问我可以使用哪些替代方案?

如果您要查找“23:30”和“24:00”之间的差异,从技术上讲,这是第二天,那么您将使用

select datediff (minute, '2012-07-10 23:30','2012-07-11 00:00') 
使用时:

select datediff (minute, '23:30','00:00') 
“00:00”被解释为同一天,这就是您获得
-1410
的原因。一天中总共有1440分钟减去30分钟的差值。
DATEDIFF
函数是:

DATEDIFF ( datepart , startdate , enddate )
如果您的结束日期“00:00”早于开始日期,则您将得到一个负数

编辑:

根据您的评论,您将在表格中使用以下内容,然后在
endtime
周围使用
CASE
语句,为其添加一天:

select datediff(minute
                , starttime
                , case 
                when endtime = '00:00' 
                then dateadd(d, 1, endtime)
                else endtime END)
from yourtable

请参见

如果您正在查找“23:30”和“24:00”之间的差异,从技术上讲,这是第二天,那么您将使用

select datediff (minute, '2012-07-10 23:30','2012-07-11 00:00') 
使用时:

select datediff (minute, '23:30','00:00') 
“00:00”被解释为同一天,这就是您获得
-1410
的原因。一天中总共有1440分钟减去30分钟的差值。
DATEDIFF
函数是:

DATEDIFF ( datepart , startdate , enddate )
如果您的结束日期“00:00”早于开始日期,则您将得到一个负数

编辑:

根据您的评论,您将在表格中使用以下内容,然后在
endtime
周围使用
CASE
语句,为其添加一天:

select datediff(minute
                , starttime
                , case 
                when endtime = '00:00' 
                then dateadd(d, 1, endtime)
                else endtime END)
from yourtable

请参见

结果显示为-1410,因为23:00和之前的00:00之间有1410分钟。

结果显示为-1410,因为23:00和之前的00:00之间有1410分钟。

在我看来,24:00在SQL中是无效的时间。正如我所知,24小时格式从00:00到23:59在我看来,24:00在SQL中是无效的时间。据我所知,24小时格式从00:00到23:59谢谢,我有两列,开始时间和结束时间。。。那么,获得两者之间的分钟数的最佳方法是什么?当end\u time=00:00时,我是否只需要执行datediff(days,-1,end\u time)?有更好的办法吗?该列没有日期组件。只有时间谢谢,我有两个专栏,开始时间和结束时间。。。那么,获得两者之间的分钟数的最佳方法是什么?当end\u time=00:00时,我是否只需要执行datediff(days,-1,end\u time)?有更好的办法吗?该列没有日期组件。唯一的时间