Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL-获取当前小时的最后一秒_Sql_Sql Server 2008_Tsql_Datetime - Fatal编程技术网

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

TSQL-获取当前小时的最后一秒,sql,sql-server-2008,tsql,datetime,Sql,Sql Server 2008,Tsql,Datetime,我需要使用查询根据表中的字段获取最后一秒的时间 我已经处理过这个查询,它似乎可以工作(SQLServer2008) 选择DATEADD(S,-1,DATEADD(hh,1,DATEADD(minute,datediff(minute,0,GETDATE())/60*60,0))) 这是最好的方法还是有更干净(可读性更强)和更快的方法。我正在考虑速度,因为这将在一个有大量字符串处理的表上运行,并且我正在尝试优化我可以优化的地方 编辑:我最初将这个问题的文本和主题发布为“当前时间的最后一分钟”,这是

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

我已经处理过这个查询,它似乎可以工作(SQLServer2008)

选择DATEADD(S,-1,DATEADD(hh,1,DATEADD(minute,datediff(minute,0,GETDATE())/60*60,0)))

这是最好的方法还是有更干净(可读性更强)和更快的方法。我正在考虑速度,因为这将在一个有大量字符串处理的表上运行,并且我正在尝试优化我可以优化的地方

编辑:我最初将这个问题的文本和主题发布为“当前时间的最后一分钟”,这是为了阅读“最后一秒”。很明显,今天我的思维已经停止了。为我的错误道歉

这个怎么样:

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


您的查询将为您提供最后的而不是分钟
这是另一种方法

select dateadd(second, -1, dateadd(hour, 1+datediff(hour, 0, getdate()), 0))
为了得到最后一分钟,你可以使用

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

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

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秒,所以差别不大。如果您尝试查询,它可能会产生影响,但据我所知,这几乎是一样的

为什么您需要这个?看起来您将要使用它在startPoint和endPoint之间搜索类似的日期。如果是这种情况,请认真考虑将逻辑重构为<代码>搜索日期> =开始点和搜索日期<端点< /代码>。然后,您不需要查找最后一分钟、最后一秒或最后一毫秒等@Dems-它是根据需求为报告输出的。我不想用在克劳塞森向大家表示感谢的场合,因为大家的反应总是很迅速,我非常感激,非常抱歉。当我打字的时候,我的大脑完全停止了。我指的是最后一秒。我正在更新我的问题谢谢Mikael。这也让我比我所拥有的更具可读性,我认为这将通过我的团队的批准,而不需要像提议的那样神奇的“59:59”。这些字符串总是会引起团队的质疑。字符串操作总是比DATEADD()选项慢。@Dems-感谢您的反馈,我将使用Mikael的方法感谢您的反馈+1需要额外的努力