【问题标题】:conversion of time into minute count将时间转换为分钟数
【发布时间】: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


【解决方案1】:

我认为是 SQL Server?这应该照顾它。只要它包含一个有效的时间值,时间在什么类型的字段中没有区别。

select (day-1) * 1440 + datediff(minute, '00:00:00', time) as result from yourtable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多