Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan Oracle SQL, bagaimana satu hari menampilkan jumlah hari dalam seminggu dan hari dalam seminggu?

Jawaban Florin adalah bagaimana saya melakukannya, tetapi Anda harus sedikit berhati-hati tentang pengaturan NLS. Hari dalam seminggu dipengaruhi oleh wilayah NLS, jadi jika saya menjalankan ini seolah-olah saya di AS, ini berfungsi:

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

Tetapi kueri yang sama dijalankan di Inggris adalah hari libur:

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

... dan saya perlu menyesuaikan perhitungan untuk memperbaikinya:

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

Anda juga dapat menentukan bahasa yang digunakan untuk nama hari secara terpisah jika Anda ingin:

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

Dokumentasi untuk to_char() dengan nls_date_language dan hari dalam seminggu, dan banyak lagi di panduan dukungan globalisasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BadImageFormatException. Ini akan terjadi ketika berjalan dalam mode 64 bit dengan komponen klien Oracle 32 bit diinstal

  2. ORA-00984:kolom tidak diizinkan di sini

  3. Memulai Oracle SQL Developer di Windows

  4. Oracle:beberapa pembaruan tabel => ORA-01779:tidak dapat mengubah kolom yang dipetakan ke tabel yang tidak diawetkan kunci

  5. ojdbc14.jar vs. ojdbc6.jar