如何使用MSSQL GetDate()获取日期?

时间:2011-01-26 20:59:03

标签: sql sql-server tsql date datetime

DELETE from Table WHERE Date > GETDATE();

GETDATE()包括时间。而不是

2011-01-26 14:58:21.637

我怎样才能得到:

2011-01-26 00:00:00.000

7 个答案:

答案 0 :(得分:73)

对SQL Server的轻微偏见

摘要

DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

SQL Server 2008虽然有date类型。所以只需使用

CAST(GETDATE() AS DATE)

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

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

来自cyberkiwi:

不涉及2个函数的替代方案是(+1可以在括号中或者在括号内)。

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

DateDiff返回一个数字但是出于所有目的,无论你打算使用这个表达式,它都可以作为一个日期,除了直接将它转换为VARCHAR - 在这种情况下你将直接在GETDATE上使用CONVERT方法( ),例如

convert(varchar, GETDATE() +1, 102)

答案 1 :(得分:9)

对于SQL Server 2008,最好的和索引友好的方式是

DELETE from Table WHERE Date > CAST(GETDATE() as DATE);

对于以前的SQL Server版本,日期数学将比转换为varchar更快。由于区域设置,即使转换为varchar也会给您错误的结果。

DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());

注意:没有必要将DATEDIFF与另一个DATEADD

包起来

答案 2 :(得分:7)

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

e.g。在PostgreSQL中你做了演员(myvalue as date)。

答案 3 :(得分:5)

SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))

答案 4 :(得分:0)

您可以使用

DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);

答案 5 :(得分:-1)

CONVERT(varchar,GETDATE(),102)

答案 6 :(得分:-1)