SQL Server中的DateDiff请求帮助

Geo*_*ge2 0 sql t-sql sql-server stored-procedures sql-server-2008

我正在使用SQL Server 2008.我有一个表有一个名为CreateTime的日期时间类型列.我需要从这个表中选择CreateTime超过3天的所有记录,距离当前时间(UTC时间)半小时.我正在使用T-SQL存储过程.

BTW:CreateTime列是过去一段时间.

我花了很多时间来学习和搜索MSDN for DateDiff的帮助,但无法弄清楚.有人能给我看样品吗?

乔治,提前谢谢

mar*_*c_s 5

您可以使用分钟选择并添加带有DATEDIFF的WHERE子句:

SELECT (fields)
FROM (table)
WHERE 
  DATEDIFF(MINUTE, CREATETIME, getutcdate()) <= (3*24*60 + 30)
Run Code Online (Sandbox Code Playgroud)

当然,如果你只是想那些行更多超过3天,30分钟的路程,只需使用相反:

WHERE 
  DATEDIFF(MINUTE, CREATETIME, getutcdate()) > (3*24*60 + 30)
Run Code Online (Sandbox Code Playgroud)

一个样品:

SELECT      
  DATEDIFF(MINUTE, '2009-08-01 08:00:00', getutcdate()),
  DATEDIFF(MINUTE, '2009-07-31 20:00:00', getutcdate()),
  DATEDIFF(MINUTE, '2009-07-23 20:00:00', getutcdate())
Run Code Online (Sandbox Code Playgroud)

给出结果:

96    816    12337
Run Code Online (Sandbox Code Playgroud)

所以前两个日期仍在你的4350分钟内(不到3天30分钟前),而第三个日期更远.