sql >> Database >  >> RDS >> Oracle

Hoe wordt met behulp van Oracle SQL het dagnummer van de week en de dag van de week weergegeven?

Het antwoord van Florin is hoe ik het zou doen, maar je moet een beetje voorzichtig zijn met NLS-instellingen. De dag van de week wordt beïnvloed door het NLS-gebied, dus als ik dit doe alsof ik in de VS ben, werkt het:

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

Maar dezelfde zoekopdracht in het VK is een vrije dag:

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

... en ik moet de berekening aanpassen om daarvoor te corrigeren:

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

U kunt desgewenst ook de taal voor de dagnamen afzonderlijk specificeren:

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

Documentatie voor to_char() met nls_date_language en dag van de week, en meer in de ondersteuningsgids voor globalisering.



  1. De weergave van DateTime in milliseconden?

  2. Hoe voer ik een opgeslagen procedure van MS SQL Server uit in java/jsp, waarbij tabelgegevens worden geretourneerd?

  3. Inleiding tot langzaam veranderende afmetingen (SCD)

  4. Topantwoorden op 5 brandende vragen over de COALESCE-functie in SQL Server