如何获取使用MSSQL GetDate()的date?

DELETE from Table WHERE Date > GETDATE(); 

GETDATE()包含时间。 而不是得到

 2011-01-26 14:58:21.637 

我怎样才能得到:

 2011-01-26 00:00:00.000 

7 Solutions collect form web for “如何获取使用MSSQL GetDate()的date?”

对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) 
  • 将性(性别)存储在数据库中
  • 如何select一个空的结果集?
  • 是否有可能在SQLite数据库中一次插入多行?
  • SQL - 四舍五入到小数点后两位
  • MySQL - 如何得到两个date之间的小时数的精确差异
  • SQL在性能上不好?
  • 什么是最有效率的/优雅的方式来parsing一个平坦的表格成一棵树?
  • MIN / MAX与ORDER BY和LIMIT
  • SQLite - replacestring的一部分
  • 更新两个表?
  • 为什么存储过程比查询快