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

9
我是一名有用的助手,可以为您翻译文本。
我有一个日期列和一个时间列,它们都是整数。
我将日期部分转换为以下格式:
select convert(int, convert(varchar(10), getdate(), 112))

我以为我可以使用这个查询来得到HH:mm:ss格式的时间。

SELECT CONVERT(VARCHAR(8), GETDATE(), 108)

如何将时间转换为整数?


1
如何以秒为单位计算日期差异? - Tab Alleman
1
你是指午夜后的秒数吗? - Mr. Mascaro
4个回答

8
这应该可以将您的时间转换为从午夜开始表示秒数的整数。
SELECT (DATEPART(hour, Col1) * 3600) + (DATEPART(minute, Col1) * 60) + DATEPART(second, Col1) as SecondsFromMidnight FROM T1;

7
假设您正在寻找有关"时间"的类比,以便将代码中的"日期"部分采用YYYYMMDD并将其转换为INT,您可以:
  1. 从样式编号108提供的HH:mm:ss格式开始
  2. 去掉冒号,使该字符串变成HHmmss
  3. 然后将其转换为INT
例如:
SELECT REPLACE(
               CONVERT(VARCHAR(8), GETDATE(), 108),
               ':',
               ''
              ) AS [StringVersion],

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

-1

我认为在使用 SQL 更新语句时,这会更容易理解。

UPDATE dbo.MyTable SET TIME_AS_INT = CAST(REPLACE(CAST(CONVERT(Time(0), GETDATE()) AS varchar),':','') AS INT)

要在转换之前添加/减去时间,请使用 dateadd()

SELECT CAST(REPLACE(CAST(CONVERT(Time(0), dateadd(MINUTE, 1, getdate())) AS varchar),':','') AS INT)


-1
你可以使用午夜和当天时间之间的差异。例如,使用getdate()函数,你可以通过以下查询了解一天中某个时刻所占的百分比:
select convert(float,getdate()-convert(date,getdate()))

然后您可以将这个数字转换为秒

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

你将得到从午夜开始的秒数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接