12

我正在运行 SQL Server 2005。从技术上讲,我知道如何从 tsql 日期时间中获取时间。

CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond

问题是我有一个日期时间字段,我需要从本质上获取时间部分,将其转换为整数,特别是秒。然后我需要对这个整数做一些算术运算,这里不讨论。我在 stackoverflow 上进行了搜索,但没有找到特定于该问题的问题。有任何想法吗?我真的在这里寻找最佳实践,我担心为此特定目的创建一个 udf,因为它完全将查询优化器抛出了窗口。

我看过这个网页,所以请不要粘贴。:

http://forums.devx.com/showthread.php?171561-TSQL-Converting-HH-MM-SS-to-seconds

4

3 回答 3

18

使用DATEPART

(DATEPART(HOUR, GETDATE()) * 3600) +
(DATEPART(MINUTE, GETDATE()) * 60) +
(DATEPART(SECOND, GETDATE()))
于 2012-09-13T22:36:44.253 回答
16

只是我的 2 美分……另一种方法

编辑:为 SQL Server 2005 添加了方法(谢谢迈克尔)

对于 SQL Server 2008

SELECT DATEDIFF(SECOND, CONVERT(date, GETDATE()), GETDATE())

对于 sql server 2005+

SELECT DATEDIFF(SECOND, DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())), GETDATE())
于 2012-09-13T23:20:37.137 回答
0

你想要的功能是 DatePart

Declare @d DateTime
Select @d = GetDate()
Select (DatePart(HOUR, @d) * 3600) + (DatePart(MINUTE, @d) * 60) + DatePart(SECOND, @d)
于 2012-09-13T22:39:20.560 回答