0
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 是一个浮点数

我正在尝试将所有每小时的持续时间放入 Duration 列......我假设即使它不到一个小时它也会使用一个分数,这就是我放一个浮点数的原因?

帮助。

PS:它运行良好,没有错误,但完成后,间隔表仍然是空的......我知道数据在 TimeInterval 表中......

4

7 回答 7

3

我不确定为什么您的数据没有显示,但 DATEDIFF 不会返回浮点数。要获得浮点数,您可能需要使用更小的时间单位并除以每分钟的单位数。例子:

DATEDIFF(second, dtStart, dtEnd) / (3600.0)
于 2009-05-01T16:18:43.287 回答
2

DATEDIFF 返回跨越的日期部分边界数的 Int。我希望你能得到持续时间的下限,除非从 Int 到 Float 的隐式转换存在问题。

发布收到的错误消息也很有帮助。

于 2009-05-01T16:18:36.640 回答
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 值,而不是分数。

于 2009-05-01T16:20:59.507 回答
1

尝试使用 INSERT 位自行运行 SELECT,以检查您的查询是否实际返回了一些数据。

编辑:正如其他人所说,DATEDIFF 返回一个整数,而不是浮点数,但这不应阻止 INSERT 插入一些数据。

于 2009-05-01T16:18:47.747 回答
0

首先,您从运行选择中得到什么结果?

于 2009-05-01T16:17:12.090 回答
0

在 Sql Server DateDiff 中返回一个 int(参见 MSDN

于 2009-05-01T16:19:29.633 回答
0

DATEDIFF 将返回一个 int 而不是 float - 这是您遇到的问题吗?

于 2009-05-01T16:20:50.537 回答