如何在SQL Server中将时间转换为整数

时间:2014-10-16 15:12:22

标签: sql sql-server-2008-r2

我有一个日期列和一个整数的时间列

我像这样转换了日期部分

select convert(int, convert(varchar(10), getdate(), 112))

我以为我可以对这个以HH:mm:ss

给出时间的查询做同样的事情
SELECT CONVERT(VARCHAR(8), GETDATE(), 108)

如何将时间转换为整数?

3 个答案:

答案 0 :(得分:6)

这应该将您的时间转换为表示午夜秒数的整数。

SELECT (DATEPART(hour, Col1) * 3600) + (DATEPART(minute, Col1) * 60) + DATEPART(second, Col1) as SecondsFromMidnight FROM T1;

答案 1 :(得分:4)

假设您正在寻找代码“日期”部分的“时间”类比,该部分需要YYYYMMDD并将其转换为INT,您可以:

  1. 以样式编号108
  2. 指定的HH:mm:ss格式开头
  3. 删除冒号以将该字符串转换为HHmmss
  4. 然后将其转换为INT
  5. 例如:

    SELECT REPLACE(
                   CONVERT(VARCHAR(8), GETDATE(), 108),
                   ':',
                   ''
                  ) AS [StringVersion],
    
           CONVERT(INT, REPLACE(
                           CONVERT(VARCHAR(8), GETDATE(), 108),
                           ':',
                           ''
                        )
                  ) AS [IntVersion];
    

答案 2 :(得分:-1)

您可以使用午夜和当天时间之间的差异。例如,使用getdate(),您可以通过此查询知道当天的时间百分比:

select convert(float,getdate()-convert(date,getdate()))

然后,您可以将此数字转换为秒数

select convert(int,86400 * convert(float,getdate()-convert(date,getdate())))

你将从午夜获得秒数