我有一个10年的数据库,我想选择从2015年10月1日到2016年1月1日的日期,以及每年从2016年1月1日到2016年6月1日的日期。下面是我的代码:
WHERE date > to_date('01-OTT-15') AND date <= to_date('01-GEN-16')
WHERE date > to_date('01-GEN-16') AND date <= to_date('01-GIU-16')
WHERE date > to_date('01-GIU-16') AND date <= to_date('01-OTT-16')
WHERE date > to_date('01-OTT-16') AND date <= to_date('01-GEN-17')
WHERE date > to_date('01-GEN-17') AND date <= to_date('01-GIU-17')
等等,直到今天
我想知道是否有一个更精简的代码或循环来复制这个代码。
听起来你想要排除所有年份的7月,8月和9月(可能还有6月,我从问题中看不出来)。
您可以将其放在单个where
子句中。使用SQL标准语法(也适用于Oracle):
where extract(month from date) not in (7, 8, 9)
或更积极:
where extract(month from date) in (1, 2, 3, 4, 5, 6, 10, 11, 12)