如何获取使用MSSQL GetDate()的date?
DELETE from Table WHERE Date > GETDATE();
GETDATE()包含时间。 而不是得到
2011-01-26 14:58:21.637
我怎样才能得到:
2011-01-26 00:00:00.000
对SQL Server稍有偏见
- 在SQL Server中删除部分date时间的最佳方法
- SQL Server中从date+时间获取date的最有效方法?
概要
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
尽pipeSQL Server 2008具有date
types。 所以只是使用
CAST(GETDATE() AS DATE)
编辑:添加一天,比较“零”前一天
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
从cyberkiwi:
不涉及2个function的替代scheme是(+1可以位于括号内或位于括号内)。
DATEDIFF(DAY, 0, GETDATE() +1)
DateDiff
返回一个数字,但是对于所有的目的来说,除了直接将其转换为VARCHAR之外,它将作为date使用这个expression式的date,在这种情况下,您可能会直接在GETDATE()上使用CONVERT方法,例如
convert(varchar, GETDATE() +1, 102)
对于SQL Server 2008,最好的和索引友好的方式是
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
对于之前的SQL Server版本,datemath将比转换为varchar的速度更快。 即使转换为varchar可以给你错误的结果,因为区域设置。
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
注意:不需要用另一个DATEADD
来包装DATEADD
这是数据库特定的。 你还没有指定你正在使用的数据库引擎。
例如在PostgreSQL中,你投了(myvalue作为date)。
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
您可以使用
DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
CONVERT(varchar,GETDATE(),102)