最近 13 个完整月 SQL WHERE 子句
Last 13 full months SQL WHERE clause
我有一个带有日期列的数据库,该日期列会在创建新 "contact" 时进行记录。当呼叫中心收到新的电话或电子邮件时,就会生成联系人。
我想要的是让 where 子句捕获最近 13 个月的完整数据。
示例:
- 今天是 1/30/2015,如果执行查询将 return 记录从 12/1/2013 到 12/31/2014。
- 今天是 2/06/2015,如果执行查询将 return 从 1/1/2014 到 1/31/2015 的记录。
- 查询将包括属于该月第一天和最后一天的日期。
我的代码如下:
WHERE
dbo.ub_contact.contact_dt BETWEEN DATEADD(year, -1, (DATEADD(month, DATEDIFF(month, -1, getdate()) - 1, -1) + 1))
AND DATEADD(month, DATEDIFF(month, -1, getdate()) - 1, -1)
运行 今天 (1/30/2015) 此代码似乎 returning 1/1/2014 - 12/31/2014。
对于解决此问题的任何帮助,我将不胜感激。
谢谢!
约翰
使用这个日期:
SELECT EOMONTH(DATEADD(mm, -1, GETDATE()))
SELECT DATEADD(dd, 1, EOMONTH(DATEADD(mm, -14, GETDATE())))
所以你的 where 子句看起来像:
WHERE dbo.ub_contact.contact_dt BETWEEN DATEADD(dd, 1, EOMONTH(DATEADD(mm, -14, GETDATE()))) AND EOMONTH(DATEADD(mm, -1, GETDATE()))
我有一个带有日期列的数据库,该日期列会在创建新 "contact" 时进行记录。当呼叫中心收到新的电话或电子邮件时,就会生成联系人。
我想要的是让 where 子句捕获最近 13 个月的完整数据。
示例:
- 今天是 1/30/2015,如果执行查询将 return 记录从 12/1/2013 到 12/31/2014。
- 今天是 2/06/2015,如果执行查询将 return 从 1/1/2014 到 1/31/2015 的记录。
- 查询将包括属于该月第一天和最后一天的日期。
我的代码如下:
WHERE
dbo.ub_contact.contact_dt BETWEEN DATEADD(year, -1, (DATEADD(month, DATEDIFF(month, -1, getdate()) - 1, -1) + 1))
AND DATEADD(month, DATEDIFF(month, -1, getdate()) - 1, -1)
运行 今天 (1/30/2015) 此代码似乎 returning 1/1/2014 - 12/31/2014。
对于解决此问题的任何帮助,我将不胜感激。
谢谢!
约翰
使用这个日期:
SELECT EOMONTH(DATEADD(mm, -1, GETDATE()))
SELECT DATEADD(dd, 1, EOMONTH(DATEADD(mm, -14, GETDATE())))
所以你的 where 子句看起来像:
WHERE dbo.ub_contact.contact_dt BETWEEN DATEADD(dd, 1, EOMONTH(DATEADD(mm, -14, GETDATE()))) AND EOMONTH(DATEADD(mm, -1, GETDATE()))