使用Oracle SQL,如何输出星期几和星期几?

Bit*_*ter 11 sql oracle

使用Oracle SQL,如何为以下内容创建结果集:

  • 本周日数(1-7)
  • 当天的名字(星期一,星期二,星期三等)

例如:

DAY   NAME
1     Monday
2     Tuesday
3     Wednesday
4     Thursday
5     Friday
6     Saturday
7     Sunday

Ale*_*ole 22

弗洛林的答案是我如何做到这一点,但你需要对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
Run Code Online (Sandbox Code Playgroud)

但在英国运行的同一个查询是休息日:

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
Run Code Online (Sandbox Code Playgroud)

......我需要调整计算以纠正错误:

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
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以单独指定用于日期名称的语言:

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
Run Code Online (Sandbox Code Playgroud)

文档to_char()nls_date_language星期,多在全球化的支持指导.

  • 这似乎对我有用`to_char(vdate,'DAY','NLS_DATE_LANGUAGE =“数字日期语言''')` (2认同)