我有部分SQL查询。
此SQL查询与其他SQL查询没有什么不同,但唯一不同的是,?DATE1::?
是为基于Web的报告工具自定义构建的。
含义?DATE1::?
将允许用户从下拉菜单中选择日期。我可以使用?DATE1::?
或在查询中手动输入日期,例如05-01-2012
这是where子句:
WHERE To_Date(to_char(B.startdatetime, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY')
and To_Date(to_char(B.enddatetime, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY')
如何更改查询,以便用户无法选择超过7天的日期范围?
答案 0 :(得分:1)
添加此条件aslo
and To_Date(to_char(B.startdatetime, 'DD-MON-YYYY'))
<= DATE_ADD(To_Date(to_char(B.enddatetime, 'DD-MON-YYYY')), INTERVAL -7 DAY)
and To_Date(to_char(B.startdatetime, 'DD-MON-YYYY'))
<= DateADD('dd' , -7, To_Date(to_char(B.enddatetime, 'DD-MON-YYYY')))
答案 1 :(得分:0)
我最终获取了原始查询后用户选择的日期之间的差异。
这是原始查询
WHERE To_Date(to_char(B.startdatetime, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY')
and To_Date(to_char(B.enddatetime, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY')
在上述之后添加此条件。
To_Date('?DATE2::?','MM/DD/YYYY') - To_Date('?DATE1::?','MM/DD/YYYY')<=7
最终查询。
WHERE To_Date(to_char(B.startdatetime, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY')
and To_Date(to_char(B.enddatetime, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY')
and To_Date('?DATE2::?','MM/DD/YYYY') - To_Date('?DATE1::?','MM/DD/YYYY')<=7