如何在使用dateadd()和getdate()时仅获取日期部分

时间:2014-02-25 10:01:20

标签: sql sql-server tsql date

我想显示当前日期过去4个月的记录。

我不想考虑时间

如何从以下查询中获取日期部分?

where OrderDate >= DATEADD(month, -4, GETDATE()) 

3 个答案:

答案 0 :(得分:4)

如果您使用的是SQL Server 2008,请尝试直接将GETDATE()转换为DATE

WHERE OrderDate >= DATEADD(month, -4, CONVERT(date, GETDATE())) 

http://sqlfiddle.com/#!3/df444/2

答案 1 :(得分:0)

为什么不使用简单的DATEDIFF函数

where DATEDIFF(MM, OrderDate, GETDATE()) < 4

答案 2 :(得分:0)

如果您无法使用DATE类型,则旧方式:将DATETIME值转换为CHAR,修剪小时组件,然后将其转换回DATETIME,因此小时组件将归零:

SELECT CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)
-- -----------------------
-- 2014-02-25 00:00:00.000

重要的是使用标量参数上的函数(以及列上的)来允许使用现有索引。