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不是一个浮点-是,您遇到的问题?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top