我有一个SQL查询,提示输入startdate和enddate,介于@startdate和@enddate之间。但我想要做的是使用dateadd / getdate代码从今天的月份开始自动查看相同的查询3个月,但无法弄清楚如何整合这两个?
答案 0 :(得分:0)
在sql-server中,我假设是因为你引用了GETDATE()
和DATEADD()
DATEADD(MONTH,3,GETDATE())
在Oracle中基于Why is the GETDATE() an invalid identifier和Equivalent 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个月的日期,然后回去一天。