繁体   English   中英

最近13个月的SQL WHERE子句

[英]Last 13 full months SQL WHERE clause

我有一个带有日期列的数据库,该列在创建新的“联系人”时进行记录。 当呼叫中心收到新的呼叫或电子邮件时,将生成联系人。

我想要的是where子句,以捕获最近13个月的完整数据。

例子:

  • 今天是1/30/2015,如果执行查询将返回记录,从2013年12月1日到2014年12月31日。
  • 今天是2/06/2015,如果执行查询将返回记录,从2014/1/1到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)

今天(2015年1月30日)运行了该代码,似乎在2014年1月1日-2014年12月31日返回。

我会很乐意帮助您解决这个问题。

谢谢!

约翰

使用此日期:

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()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM