【发布时间】:2019-11-15 06:49:22
【问题描述】:
数据采用日期/时间格式,我正在尝试获取从今天起 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())
【问题讨论】:
-
检查 DATEADD 是否在 sql server 2005 中工作:
DATEADD (MONTH, 1, GetDate()) -
@Antonio - 虽然the docs say it started in 2008,但我可以确认它在 2005 年确实有效。还有 1 个月!= 30 天
-
@Rain - 只是一个小点,但 7 月有 31 天,所以在 7 月 1 日加上 30 将导致 7 月 31 日......而不是 8 月 1 日
-
是时候更新到受支持的 SQL Server 版本了。
-
您的第一个代码 sn-p 检查 当前 月 (
DATEPART("month", GetDate())) 和 30 天后的天数 (DATEPART("day", GetDate()+30))。在大多数情况下,30 天后将是 下 个月。
标签: sql tsql sql-server-2005