为什么这不是插入与DATEDIFF声明的工作权利?
题
INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration)
SELECT ixInterval, DATEDIFF(hour, dtStart, dtEnd) FROM fogbugz.dbo.TimeInterval
WHERE dtEnd is not NULL
IntervalID是一个整数、持续时间是一个漂浮
我设法把所有时间进入的持续时间柱...我想即使是不到一个小时,它将使用一小部分,这就是为什么我把一个浮起来?
帮助。
PS:它的运行的现有错误,但后完成的间隔时间表仍然是空的...我知道数据是在对的时间间隔内表虽然...
解决方案
我不知道为什么你的数据没有显示出来,但DATEDIFF是不会返回一个浮动。得到一个浮起,你可能会想到使用一个较小的单位时间鸿沟的数量的单位每分钟。例如:
DATEDIFF(second, dtStart, dtEnd) / (3600.0)
其他提示
DATEDIFF返回Int的数目的日期部分边界穿过。我希望你得到地板上的小时数持续时间,除非有一个问题与隐性转换,从Int浮动。
它还有助于发布错误消息的接收。
插入实际小时的一部分,使用:
INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration)
SELECT
ixInterval,
DATEDIFF(mi, dtStart, dtEnd) / 60.0
FROM
fogbugz.dbo.TimeInterval
WHERE
dtEnd is not NULL
DATEDIFF总是返回的一个INT值,永远不会一小部分。
试试运行的选择在其自己的插入点,以检查您的查询是实际上返回一些数据。
编辑:正如其他人所说的那样,DATEDIFF返回int,不是一个浮动,但是,这不应该阻止插入插入一些数据。
第一个什么样的结果你得到的只是自行选择?
在Sql服务器DateDiff返回int (见MSDN)
DATEDIFF会返回一个int不是一个浮点-是,您遇到的问题?
不隶属于 StackOverflow