Oracle
 sql >> Base de données >  >> RDS >> Oracle

À l'aide d'Oracle SQL, comment génère-t-on le numéro de jour de la semaine et le jour de la semaine ?

La réponse de Florin est comment je le ferais, mais vous devez faire un peu attention aux paramètres NLS. Le jour de la semaine est affecté par le territoire NLS, donc si je l'exécute comme si j'étais aux États-Unis, cela fonctionne :

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

Mais la même requête exécutée au Royaume-Uni est un jour de congé :

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

... et je dois ajuster le calcul pour corriger cela :

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

Vous pouvez également spécifier la langue utilisée pour les noms de jour séparément si vous le souhaitez :

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

Documentation pour to_char() avec nls_date_language et le jour de la semaine, et plus encore dans le guide d'assistance à la globalisation.