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

use*_*621 3 sql sql-server-2008-r2

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

我像这样转换了日期部分

select convert(int, convert(varchar(10), getdate(), 112))
Run Code Online (Sandbox Code Playgroud)

我想我可以用这个查询来做同样的事情,它给出了HH:mm:ss的时间

SELECT CONVERT(VARCHAR(8), GETDATE(), 108)
Run Code Online (Sandbox Code Playgroud)

如何将时间转换为整数?

Dea*_*one 6

这应该将您的时间转换为表示从午夜开始的秒数的整数.

SELECT (DATEPART(hour, Col1) * 3600) + (DATEPART(minute, Col1) * 60) + DATEPART(second, Col1) as SecondsFromMidnight FROM T1;
Run Code Online (Sandbox Code Playgroud)


Sol*_*zky 5

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

  1. HH:mm:ss样式编号 108 给出的格式开始
  2. 删除冒号以将该字符串放入 HHmmss
  3. 然后将其转换为 INT

例如:

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

       CONVERT(INT, REPLACE(
                       CONVERT(VARCHAR(8), GETDATE(), 108),
                       ':',
                       ''
                    )
              ) AS [IntVersion];
Run Code Online (Sandbox Code Playgroud)