sql >> Databasteknik >  >> RDS >> Oracle

Med Oracle SQL, hur matar man ut dagnummer veckodag och veckodag?

Florins svar är hur jag skulle göra, men du måste vara lite försiktig med NLS-inställningar. Veckodagen påverkas av NLS-territoriet, så om jag kör detta som om jag är i USA fungerar det:

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

Men samma sökfråga i Storbritannien är en ledig 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

... och jag måste justera beräkningen för att korrigera för det:

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

Du kan också ange vilket språk som används för dagnamnen separat om du vill:

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

Dokumentation för to_char() med nls_date_language och veckodag, och mer i supportguiden för globalisering.



  1. Kontrollera om en postgresql-tabell finns under python (och förmodligen Psycopg2)

  2. Byt namn på kolumn SQL Server 2008

  3. Välj första raden i varje grupp i sql

  4. Använda Oracle Service Names med SQLAlchemy