在SQL 2008中,为什么在执行此操作时出现错误:
select datediff (minute, '23:30','24:00')
Run Code Online (Sandbox Code Playgroud)
错误是:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
Run Code Online (Sandbox Code Playgroud)
即使我改24:00到00:00为什么结果说-1410?
请问我可以使用哪些替代方案?
如果您正在寻找'23:30'和'24:00'之间的区别 - 技术上是第二天,那么您将使用
select datediff (minute, '2012-07-10 23:30','2012-07-11 00:00')
Run Code Online (Sandbox Code Playgroud)
当你使用:
select datediff (minute, '23:30','00:00')
Run Code Online (Sandbox Code Playgroud)
'00:00'被解释为同一天,这就是你得到的原因-1410.当天共有1440分钟减去30分钟.该DATEDIFF功能是:
DATEDIFF ( datepart , startdate , enddate )
Run Code Online (Sandbox Code Playgroud)
如果您的结束日期'00:00'在您的开始日期之前,那么您将得到一个负数.
编辑:
根据您的评论,您将使用以下内容为您的表,然后使用CASE周围的语句endtime添加一天:
select datediff(minute
, starttime
, case
when endtime = '00:00'
then dateadd(d, 1, endtime)
else endtime END)
from yourtable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |