TSQL - 获取当前时间的最后一秒

时间:2012-10-12 11:42:32

标签: sql sql-server-2008 tsql datetime

我需要使用查询来根据表中的字段获取一小时的最后一秒。

我已经使用了这个查询,它似乎可以工作(SQL Server 2008)

  

SELECT DATEADD(S,-1,DATEADD(hh,1,dateadd(分钟,datediff(分钟,0,GETDATE())/ 60 * 60,0)))

这是解决这个问题的最佳方式,还是更清晰(更易读)和更快捷的方法。我正在考虑速度,因为这将在一个包含大量字符串处理的表格上运行,并且我正在尝试优化我的位置。

编辑:我最初将此问题的文字和主题发布为“当前时间的最后一分钟”这是为了阅读“最后一秒”。我的头脑显然已经关闭了一天。为我的错误道歉

3 个答案:

答案 0 :(得分:5)

这个怎么样:

  select convert(char(13),GETDATE(),121)+':59:59.000'


SQl Fiddle demo

答案 1 :(得分:4)

您的查询将为您提供最后而非分钟 这是另一种方式。

select dateadd(second, -1, dateadd(hour, 1+datediff(hour, 0, getdate()), 0))

要获得最后一分钟,您可以使用

select dateadd(minute, -1, dateadd(hour, 1+datediff(hour, 0, getdate()), 0))

答案 2 :(得分:1)

我实际上和Joe几乎有相同的想法,但我试图找出哪一个更快,所以我跑了:

SELECT DATEADD(S, -1, DATEADD(hh, 1, dateadd(minute, datediff(minute,0,GETDATE()) / 60 * 60, 0)))
GO 1000

然后:

select SUBSTRING( convert(varchar(20), GETDATE(),20),1,14)+'59:59'
GO 1000

第一次查询在44秒内运行,第二次在42中运行,因此没有太大区别。也许如果你尝试查询,它可能会影响,但据我所知,它将是almos相同的