如何获取使用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) 
  • java.util.Date vs java.sql.Date
  • 比较SQL和Prolog
  • 无法启用约束。 一行或多行包含违反非空,唯一或外键约束的值
  • 在SQL中获得null == null
  • 从多个表中select计数(*)
  • 如何删除PostgreSQL中sorting的固定行数?
  • 如何使用“as”关键字在Oracle中为表格添加别名?
  • Oracle SQL数据透视表查询
  • 简单的DateTime sql查询
  • CURRENT_TIMESTAMP以毫秒为单位
  • SQL如何使sorting升序时为空值最后