在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
?
我可以使用哪些替代品?
答案 0 :(得分:5)
如果您正在寻找'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
答案 1 :(得分:0)
结果显示-1410,因为在前一个00:00的23:00之间有1,410分钟。