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

时间:2012-07-10 23:12:34

标签: 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

我可以使用哪些替代品?

2 个答案:

答案 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

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

结果显示-1410,因为在前一个00:00的23:00之间有1,410分钟。