dateadd和SQL Query之间

时间:2016-06-14 16:53:28

标签: sql

我有一个SQL查询,提示输入startdate和enddate,介于@startdate和@enddate之间。但我想要做的是使用dateadd / getdate代码从今天的月份开始自动查看相同的查询3个月,但无法弄清楚如何整合这两个?

1 个答案:

答案 0 :(得分:0)

在sql-server中,我假设是因为你引用了GETDATE()DATEADD()

DATEADD(MONTH,3,GETDATE())

在Oracle中基于Why is the GETDATE() an invalid identifierEquivalent function for DATEADD() in Oracle

ADD_MONTHS(SYSDATE,3)

根据您的评论,如果Siebel在sql-server上,您需要

Where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between @startdate And @enddate And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive

成为

where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between 

DATEFROMPARTS(YEAR(DATEADD(MONTH,3,GETDATE())),MONTH(DATEADD(MONTH,3,GETDATE())),1)
    AND DATEADD(DAY,-1,DATEFROMPARTS(YEAR(DATEADD(MONTH,4,GETDATE())),MONTH(DATEADD(MONTH,4,GETDATE())),1))

 And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive

要打破这一点,因为你实际上是在寻找从今天起3个月到今月3个月之后的月份的开始,这些月份可能是28,29,30,或31天你实际上需要提前3个月找到日期然后获得月初DATEFROMPARTS()对此有用。然后在月底,找到4个月的日期,然后回去一天。