如何获取使用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具有datetypes。 所以只是使用

 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)