【问题标题】:Convert Seconds to Hours and Minutes将秒转换为小时和分钟
【发布时间】:2014-04-08 22:38:09
【问题描述】:

我已阅读 StackOverflow 上有关将整数从秒转换为小时和分钟的所有帖子。
我正在使用此语句来实现以下结果:

SELECT EventDate, OriginalSeconds, 
LEFT(CONVERT(VARCHAR(5),
DATEADD(second, OriginalSeconds, 0), 108), 5)

我得到以下结果:

EventDate   Seconds     Converted Time  SHOULD BE
01/13/2011  4860001     06:00           13:30
01/13/2011  4860001     06:00           13:30
01/14/2013  3960001     20:00           11:00
02/03/2011  3960001     20:00           11:00

当然,唯一的问题是没有正确计算转换后的时间列。 (我将正确的结果放在应该为您的列中:。) 我想这是因为秒列实际上最后有无关的数据。但是 LEFT 函数不是解决了这个问题吗?

应该是列是我想要实现的。我究竟做错了什么?我一直在寻找一个没有功能的简单解决方案,但不确定我能否实现。

【问题讨论】:

  • 声明不是你写的吧?因为 left 仅用于处理计算结果。而不是 Originalseconds 字段。
  • Bartno- 只是一个剪辑和过去的黑客工作。

标签: sql tsql


【解决方案1】:

正确的说法(使用你的代码)是

SELECT EventDate, OriginalSeconds, 
LEFT(CONVERT(VARCHAR(5),
DATEADD(second, OriginalSeconds/100, 0), 108), 5)

这为 4860001 提供了 13:30

您需要告诉我们原始OriginalSeconds 列的哪一部分不是秒。

DATEADD(second, @secs/100, 0)4860001 变成1900-01-01 13:30:00.000

CONVERT(VARCHAR(5), 1900-01-01 13:30:00.000, 108) 把它变成13:30

Left 可能不需要。我刚刚用9000001 试了一下,得到了01:00 的结果。所以公式换成了 24 小时

【讨论】:

  • +1,如果不确定位数并且需要使用 LEFT,那么双重转换应该可以解决问题
  • 彼得- 太完美了。我什至没有想过除以 100,而是更担心先以某种方式编辑字符串。不错!
  • @user3370701 我只是试图分解它以了解到底发生了什么......它不是将秒转换为小时的最佳代码
  • 是的,这比我下面的方法好,我也没想到要除以 100!
  • 希望我的客户端应用程序(Microsoft Dynamics CRM 在线)将 13:30 拉到 1:30。如果我将数据重新导入 SQL,它应该,不是吗?
猜你喜欢
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 2013-05-05
相关资源
最近更新 更多