1

我有一部分 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 天的日期范围?

4

2 回答 2

1

也添加这个条件

mysql

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')))  
于 2012-09-13T13:54:32.057 回答
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
于 2012-09-13T14:21:00.907 回答