如何在oracle SQL中的两个日期之间生成所有 Sunday 日期?
例如,如果我想要在“ 01/10/2018” 和“ 31/12/2018” 之间的所有星期日
will be:
07/10/2018
14/10/2018
21/10/2018
...
30/12/2018
我又如何生成2个日期之间的所有日期?
示例:从“ 01/12/2018” 到“ 31/12/2018”
输出将是:
01/12/2018
02/12/2018
03/12/2018
...
31/12/2018
答案 0 :(得分:3)
这是怎么回事? CTE(dates
)为从2018-10-01
到2018-10-01
之间的天数创建一个从2018-12-31
开始的所有日期的“日历”。这回答了您的第二个问题。
对于第一个问题,请结合使用TO_CHAR
函数和适当的格式掩码(dy
)和日期语言(因为如果我不使用它,则会得到克罗地亚名字,因为这是我的默认设置)语言),选择所有星期日。
SQL> with dates as
2 (select date '2018-10-01' + level - 1 datum
3 from dual
4 connect by level <= date '2018-12-31' - date '2018-10-01' + 1
5 )
6 select datum
7 From dates
8 where to_char(datum, 'dy', 'nls_date_language = english') = 'sun';
DATUM
-----------
07-oct-2018
14-oct-2018
21-oct-2018
28-oct-2018
04-nov-2018
11-nov-2018
18-nov-2018
25-nov-2018
02-dec-2018
09-dec-2018
16-dec-2018
23-dec-2018
30-dec-2018
13 rows selected.
SQL>
答案 1 :(得分:0)
以下查询可以做到。
首先使用connect by子句生成行,每一行的“ level”列的值将增加1 同时获得每个日期的day_of_week 过滤掉day_of_week ='sun'
的记录PV
对于查询的第二部分,只需在day_of_week上删除过滤器
oc run tmp-pod --image=registry.access.redhat.com/rhel7 -- tail -f /dev/null
oc set volume dc/tmp-pod --add -t pvc --name=new-registry --claim-name=new-registry --mount-path=/mountpath
答案 2 :(得分:0)
select
to_char(date,'DD-MON-YYYY')
from
dates
where
(trunc(date) >= '01/12/2018'
and
trunc(date)<= '31/12/2018')
and
to_char(date,'DAY') ='SUNDAY';