有没有人知道如何在两天之内的全天获取datdiff。
我当前正在使用
datediff(day,createddate,dateserved)
但需要它返回多少整天
即
Created = 1/7/2010 2100
dateserved = 2/7/2010 2000
目前,dateiff将显示1天,但我需要它显示0直到日期保留通过2100
任何想法 属
答案 0 :(得分:3)
SELECT FLOOR(CAST(dateserved AS FLOAT) - CAST( createddate AS FLOAT))
此外,以下似乎有效并且更简洁,但可能需要一些测试
SELECT FLOOR(CAST(dateserved-createddate AS FLOAT))
答案 1 :(得分:2)
你可以做的是使用你可以实现的DATEDIFF()
功能中最小的分辨率(分钟,秒,等等)。然后数学将其转换为日期表示。
我基本上建议:
Floor(DATEDIFF(mi, createddate, dateserved)/60/24);
答案 2 :(得分:2)
@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
...即,计算日期时间之间的小时差,除以24,并截断小数值。 SQL看似截断,但如果你是偏执狂,请使用
print datediff(hh, @From, @Thru) / 24.0
PRINT floor(datediff(hh, @From, @Thru) / 24.0)
确保正确截断。如果您需要精确到分钟,秒或毫秒,请添加更多的算术。
答案 3 :(得分:1)
您可以使用:
DATEDIFF(dy, created_date, date_served) -
CASE
WHEN CAST(created_date AS TIME) > CAST(date_served AS TIME) THEN 1
ELSE 0
END
我最初建议尝试使用除法,但是当你达到毫秒时,你可以快速击中算术溢出。