INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration)
SELECT ixInterval, DATEDIFF(hour, dtStart, dtEnd) FROM fogbugz.dbo.TimeInterval
WHERE dtEnd is not NULL
IntervalID是一个int,Duration是一个浮点数
我试图将所有小时持续时间放入持续时间列...我假设即使它不到一个小时它会使用一个分数,这就是为什么我放一个浮点数?
帮助。
PS:它运行正常没有错误,但在完成后,interval表仍然是空的...我知道数据在TimeInterval表中虽然...
答案 0 :(得分:3)
我不确定为什么你的数据没有显示,但是DATEDIFF不会返回浮点数。要获得浮动,您可能希望使用较小的时间单位除以每分钟的单位数。例如:
DATEDIFF(second, dtStart, dtEnd) / (3600.0)
答案 1 :(得分:2)
DATEDIFF返回跨越日期部分边界数的Int。除非存在从Int到Float的隐式转换的问题,否则我希望你能得到持续时间的最小值。
发布收到的错误消息也很有帮助。
答案 2 :(得分:2)
要插入一小时的实际分数,请使用:
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值,绝不是一个分数。
答案 3 :(得分:1)
尝试使用INSERT位自行运行SELECT,以检查您的查询是否实际返回了一些数据。
编辑:正如其他人所说,DATEDIFF返回一个int,而不是一个浮点数,但这不应该阻止INSERT插入一些数据。
答案 4 :(得分:0)
首先,您从运行select?
得到什么结果?答案 5 :(得分:0)
在Sql Server中,DateDiff返回一个int (See MSDN)
答案 6 :(得分:0)
DATEDIFF会返回一个int而不是一个浮点数 - 这是你遇到的问题吗?