【发布时间】:2018-11-22 10:51:31
【问题描述】:
下面的 sql 显示 57 小时,但是,它是 44 小时。我该如何解决。
SELECT DATEDIFF(Hour,'2018-11-20 2:26:38.000','2018-11-22 11:00:29.367')
【问题讨论】:
标签: sql-server sql-server-2008 select hour
下面的 sql 显示 57 小时,但是,它是 44 小时。我该如何解决。
SELECT DATEDIFF(Hour,'2018-11-20 2:26:38.000','2018-11-22 11:00:29.367')
【问题讨论】:
标签: sql-server sql-server-2008 select hour
两个日期都使用 24 小时格式
SELECT DATEDIFF(Hour,'2018-11-20 14:26:38.000','2018-11-22 11:00:29.367')
【讨论】:
不将小时数前缀为两位数看起来可能是问题所在,明确地在下午给出结果。
/*------------------------ 选择日期(小时,'2018-11-20 14:26:38.000','2018-11-22 11:00:29.367') ------------------------------------*/ 45您的默认日期时间格式可能是 12 小时,“2:…”被视为下午。
使用两位数表示小时应该会有所帮助。
/*------------------------ 选择日期(小时,'2018-11-20 02:26:38.000','2018-11-22 11:00:29.367') ------------------------------------*/ 57(SQL Server 有很多向后兼容性可能会触发输入格式不精确,ISO 日期/时间格式总是使用两位数表示小时、分钟和秒。)
如果您使用的是客户端(而不是存储过程/函数/触发器/...中的固定代码),则对查询进行参数化可避免此问题:直接将数据作为日期时间类型传递,无需转换为字符串。
【讨论】: