2014-04-08 255 views
3

我已阅读关于将整数从秒转换为小时和分钟的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 

唯一的问题,当然,是转换的时间列未正确计算。 (我把正确的结果放在你应该的SHOULD BE列中:) 我在想象这是因为秒列实际上在最后有无关数据。但是LEFT函数不是固定的吗?

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

+0

你没有写出声明,对吧?因为左侧仅用于处理计算结果,而不是Originalseconds字段。 –

+0

Bart-no-只是一个剪辑和过去的黑客工作。 – samiboy

回答

2

正确的语句(使用你的代码)是

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

这给为13:30 4860001

你需要告诉我们原来OriginalSeconds的部分是不秒。

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

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

Left大概是不需要。我刚刚用9000001试了一下,结果是01:00。所以公式包装到24小时

+0

+1,同样如果不确定数字的位数并且需要使用LEFT,那么双投就应该诀窍 – Jayvee

+0

彼得 - 那很完美。我甚至没有想到要用100分割,并且更担心首先以某种方式编辑字符串。太好了! – samiboy

+0

@ user3370701我只是想分解它了解到底是怎么回事......它不是将秒转换成小时的最佳代码。 –

相关问题