SQL日期比较

时间:2008-11-20 20:38:53

标签: sql tsql

如何检查记录的时间戳日期是否在今天午夜之前?

是的,我发疯了......

5 个答案:

答案 0 :(得分:6)

尝试:

WHERE dtColumn < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

答案 1 :(得分:1)

以下是如何在SQL中获取0小时

SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime))

将你的时间与之比较。

不要使用varchar强制转换,因为它们很慢。

Check this list获取更多日期时间帮助。

答案 2 :(得分:0)

试试这个:

where myColumn < cast( (cast(getdate() - 0.5 as int)) as datetime)

答案 3 :(得分:0)

你的意思是你使用的列的数据类型是“TimeStamp”,而不是dateTime或smalldatetime?

如果是这样,那你就不走运了。这个数据类型与日期或时间无关(它确实具有误导性......)它只是保证按时间顺序排列并且顺序...但是没有办法将它与日期时间进行比较

http://msdn.microsoft.com/en-us/library/aa260631(SQL.80).aspx

http://www.sqlteam.com/article/timestamps-vs-datetime-data-types

答案 4 :(得分:0)

如果ColumnName(您正在检查的列)是数据类型datetime,而不是时间戳, 然后最快的方法是

Select Case DateDiff(day, columnName, getDate()) 
   When 0 Then 'Today' Else 'Earlier' End
From TableName

假设ColumnName中的所有日期值现在或更早......

想到datediff的最简单的方法是它计算指定类型的“boundarys”的数量,你必须从一个日期时间到另一个日期时间...