使用Oracle SQL,你如何创建一个结果集为:使用Oracle SQL,如何输出星期几和星期几?
- 号(周一,周二,周三,等等)日的一周内(1-7)
- 一天的名称
例如:
DAY NAME 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6 Saturday 7 Sunday
使用Oracle SQL,你如何创建一个结果集为:使用Oracle SQL,如何输出星期几和星期几?
例如:
DAY NAME 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6 Saturday 7 Sunday
弗洛林的答案是我该怎么做,但你需要对NLS设置有点小心。一周的天是由NLS领土受到影响,所以如果我运行这个,如果我在美国是它的工作原理:
alter session set nls_territory = 'AMERICA';
select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
D DAY
- ------------------------------------
6 Friday
select level as dow,
to_char(trunc(sysdate ,'D') + level, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
但在英国运行的同一查询是一个休息日:
alter session set nls_territory = 'UNITED KINGDOM';
select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
D DAY
- ------------------------------------
5 Friday
select level as dow,
to_char(trunc(sysdate ,'D') + level, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Tuesday
2 Wednesday
3 Thursday
4 Friday
5 Saturday
6 Sunday
7 Monday
...我需要调整计算更正为:
select level as dow,
to_char(trunc(sysdate ,'D') + level - 1, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
你也可以分别指定使用的日期名称的语言,如果你想:
select level as dow,
to_char(trunc(sysdate ,'day') + level - 1, 'Day',
'NLS_DATE_LANGUAGE=FRENCH') as day
from dual
connect by level <= 7;
DOW DAY
--- --------------------------------
1 Lundi
2 Mardi
3 Mercredi
4 Jeudi
5 Vendredi
6 Samedi
7 Dimanche
to_char()
with nls_date_language
和day of the week的文档,以及更多的globalisation support guide。
Select 1, 'Monday' from dual union all select 2, 'Tuesday' from dual ...
感谢您的回复。有没有使用UNION的另一种方法。 –
select level as dow,
to_char(level+trunc(sysdate,'D'),'Day') as day
from dual
connect by level <= 7;
这原本是一个措辞很差的问题。然而,它已被编辑和澄清,现在是一个非常有用的问题。本页上的答案对我来说简化了(最初)困难的Oracle问题很有帮助。这些答案在其他地方不可用。这个问题值得重新评估,并可能重新开放。 –
现在这是一个真正的问题。 –