从日期时间开始,将其转换为秒?

Bil*_*hip 9 t-sql sql-server-2005

我正在运行SQL Server 2005.从技术上讲,我知道如何从tsql datetime中抽出时间.

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

问题是我有一个datetime字段,我需要基本上抓住时间部分转换为一个整数,特别是秒.然后我需要对这个整数做一堆算术,我不会在这里讨论.我搜索了stackoverflow,但没有找到特定于这个问题的问题.有任何想法吗?我真的在这里寻找最佳实践,我担心为这个特定目的创建一个udf,因为它完全抛出了查询优化器.

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

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

Mic*_*son 11

用途DATEPART:

(DATEPART(HOUR, GETDATE()) * 3600) +
(DATEPART(MINUTE, GETDATE()) * 60) +
(DATEPART(SECOND, GETDATE()))
Run Code Online (Sandbox Code Playgroud)


Cle*_*gic 11

只是我的2美分...这样做的另一种方式

编辑:添加SQL Server 2005的方法(谢谢Michael)

对于SQL Server 2008

SELECT DATEDIFF(SECOND, CONVERT(date, GETDATE()), GETDATE())
Run Code Online (Sandbox Code Playgroud)

对于sql server 2005+

SELECT DATEDIFF(SECOND, DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())), GETDATE())
Run Code Online (Sandbox Code Playgroud)

  • +1 ...但这只适用于Sql Server 2008及更高版本. (2认同)