【发布时间】:2014-09-11 14:10:36
【问题描述】:
好的,所以我需要将表中的值转换为绝对分钟数。 我的意思是这个。
我目前有这样的数据
身份证日时间
1 1 00:04
2 1 01:08
3 2 00:08
4 2 02:04
我希望它转换为总分钟数,而不是每天重置为零。所以会是
身份证日时间
1 1 04
2 1 68
3 2 1448
4 2 1564
当前时间数据是 varchar(5) 而不是日期时间。我试过了
DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0,dispatchday), 0), dispatchday)
那只返回零
【问题讨论】:
-
这看起来像sql server???为什么要使用 varchar 来存储时间数据?您应该使用时间数据类型。如果我理解正确,您只想添加 (Day - 1) * 1440 + (Hours * 60) + Minutes?这个发货日是什么日子?你能提供ddl和示例数据吗? sqlfiddle.com 是一个很好的起点。
-
我知道它不应该在 varchar 中,但这就是我给出的。 Dispatchday 相当于 daynumber,出于显而易见的原因,我只是不能在 sql 中使用像 Day 这样通用的东西。你的公式是正确的,我只是在将我的 varchar 转换为小时和分钟时遇到问题。
-
如果没有可以使用的东西,我也做不到。 :) 只需将该 varchar 转换为时间数据类型并获取公式所需的部分。希望您的数据都是有效的。
-
此外,如果您将时间转换为 TIME 数据类型,则无需执行 DATEADD(DATEDIFF()) 技巧。你可以只做 DATEDIFF(minute,0,[Time])
-
我想通了,我没有转换为日期时间,而是将 LEFT(time,2) 用作小时,将 Right(time,2) 用作分钟。然后使用你的公式。
标签: sql datetime datetime-format valueconverter