关于SQL:在使用mssql get date()时,如何只获取日期?

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具有date类型。所以只需使用

1
CAST(GETDATE() AS DATE)

编辑:要添加一天,请与"零"前一天进行比较

1
DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0)

来自赛维基维:

不涉及两个函数的另一种选择是(括号内或括号内可以是+1)。

1
DATEDIFF(DAY, 0, GETDATE() +1)

DateDiff返回一个数字,但出于所有目的,无论您打算在哪里使用这个表达式,它都将作为日期工作,除非将它直接转换为varchar—在这种情况下,您将直接在getDate()上使用convert方法,例如。

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());

注:不必用另一个DATEADD包裹DateDiff


它是特定于数据库的。您尚未指定正在使用的数据库引擎。

例如,在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)