在 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
?
请问我可以使用哪些替代方案?
在 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”早于您的开始日期,那么您将得到一个负数。
编辑:
根据您的评论,您将在表格中使用以下内容,然后使用CASE
围绕 的语句endtime
为其添加一天:
select datediff(minute
, starttime
, case
when endtime = '00:00'
then dateadd(d, 1, endtime)
else endtime END)
from yourtable
结果显示为 -1410,因为从 23:00 到前一个 00:00 之间有 1,410 分钟。