有没有人知道如何在两天之间获得全天的数据差异。
即时消息当前正在使用
datediff(day,createddate,dateserved) 但是需要返回多少完整的天数?
i.e
Created = 1/7/2010 2100
dateserved = 2/7/2010 2000目前,日期差异将显示1天,但我需要它显示0,直到日期保存超过2100
任何想法Sp
发布于 2010-07-08 23:55:41
@Ian Jacobs首先获得了它,但我在T-SQL中是如何做到这一点的。假设你只关心小时数:
DECLARE
@From datetime
,@Thru datetime
SET @From = 'Jan 1, 2010 21:00'
SET @Thru = 'Jan 3, 2010 20:00' -- 2/7/2010 2000
print datediff(dd, @From, @Thru)
print datediff(hh, @From, @Thru)
PRINT datediff(hh, @From, @Thru) / 24...that是,计算日期时间之间的小时差,除以24,并截断十进制值。SQL看起来是截断的,但如果您是偏执狂,请使用
print datediff(hh, @From, @Thru) / 24.0
PRINT floor(datediff(hh, @From, @Thru) / 24.0)以确保正确的截断。如果您需要精确到分钟、秒或毫秒,则添加更多的算术运算。
发布于 2010-07-08 23:54:38
SELECT FLOOR(CAST(dateserved AS FLOAT) - CAST( createddate AS FLOAT))另外,下面的代码看起来很有效,也更简洁,但可能需要一些测试
SELECT FLOOR(CAST(dateserved-createddate AS FLOAT))发布于 2010-07-08 23:51:54
您所能做的就是在DATEDIFF()函数中使用尽可能小的分辨率(分钟、秒等等)。然后用数学将其转换为一天的表示。
我基本上是在提议:
Floor(DATEDIFF(mi, createddate, dateserved)/60/24);https://stackoverflow.com/questions/3205417
复制相似问题