DATEDIFF(分钟,'23:30' , '24:00')错误
问题描述:
在SQL 2008,为什么我得到一个错误,当我这样做:DATEDIFF(分钟,'23:30' , '24:00')错误
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
答
结果表示-1410,因为前面00:00之间的23:00之间有1410分钟。
在我看来,24:00在SQL中不是有效的时间。据我所知,24小时制格式从00:00到23:59 – 2012-07-10 23:19:51