首页 > 解决方案 > T-SQL 查询以获取从今天起 +30 天的日期

问题描述

数据采用日期/时间格式,我正在尝试获取从今天起 30 天内日期精确的行列表。这是基于 SQL Server 2005。

所以在 7 月 1 日,我会得到一个日期为 8 月 1 日的行列表。

示例条目将是:

1993 年 7 月 4 日,星期日 12:00

但是,由于某种原因,我的查询似乎根本没有返回任何行。

AND DATEPART("month", a.PersonBirthdate) = DATEPART("month", GetDate())
AND DATEPART("day", a.PersonBirthdate) = DATEPART("day", GetDate()+30)

例如,下面的查询部分可以很好地获取日期所在的行列表:

AND DATEPART("month", a.PersonBirthdate) = DATEPART("month", GetDate())
AND DATEPART("day", a.PersonBirthdate) = DATEPART("day", GetDate())

标签: sqltsqlsql-server-2005

解决方案


要计算今天加上 30 天,Date您可以使用:

DateAdd( day, 30, Cast( GetDate() as Date ) )

请注意,如果您尝试按DateTime具有该日期的列检索行,您将使用:

where DateAdd( day, 30, Cast( GetDate() as Date ) ) <= DateTimeColumn and
  DateTimeColumn < DateAdd( day, 31, Cast( GetDate() as Date ) )

这将包括直到第二天午夜的所有时间,但不包括。条件是SARGABLE以便它可以从索引中受益。


推荐阅读