如何检查记录的时间戳日期是否在今天午夜之前?
是的,我发疯了......答案 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”的数量,你必须从一个日期时间到另一个日期时间...