How do I get just the date when using MSSQL GetDate()?
本问题已经有最佳答案,请猛点这里访问。
1 | DELETE FROM TABLE WHERE DATE > GETDATE(); |
getDate()包括时间。而不是
1 | 2011-01-26 14:58:21.637 |
我怎样才能得到:
1 | 2011-01-26 00:00:00.000 |
对SQL Server稍有偏差
- 在SQL Server中删除日期时间部分的最佳方法
- SQL Server中从日期+时间获取日期的最有效方法是什么?
总结
1 | DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) |
不过,SQL Server 2008具有
1 | CAST(GETDATE() AS DATE) |
编辑:要添加一天,请与"零"前一天进行比较
1 | DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0) |
来自赛维基维:
不涉及两个函数的另一种选择是(括号内或括号内可以是+1)。
1 | DATEDIFF(DAY, 0, GETDATE() +1) |
1 | CONVERT(VARCHAR, GETDATE() +1, 102) |
对于SQL Server 2008,最好的索引友好方式是
1 | DELETE FROM TABLE WHERE DATE > CAST(GETDATE() AS DATE); |
对于以前的SQL Server版本,日期数学比转换为varchar更快。由于区域设置的原因,即使转换为varchar也可能会给出错误的结果。
1 | DELETE FROM TABLE WHERE DATE > DATEDIFF(d, 0, GETDATE()); |
注:不必用另一个
它是特定于数据库的。您尚未指定正在使用的数据库引擎。
例如,在PostgreSQL中,您需要进行强制转换(MyValue作为日期)。
1 | SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101)) |
你可以使用
1 | DELETE FROM TABLE WHERE DATE > CONVERT(VARCHAR, GETDATE(), 101); |
这里有几个解决方案;)
http://www.benadel.com/blog/122-getting-only-the-date-part-of-a-date-time-stamp-in-sql-server.htm
1 | CONVERT(VARCHAR,GETDATE(),102) |