Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sử dụng Oracle SQL, làm thế nào để xuất số ngày trong tuần và ngày trong tuần?

Câu trả lời của Florin là cách tôi thực hiện, nhưng bạn cần phải cẩn thận một chút về cài đặt NLS. Ngày trong tuần bị ảnh hưởng bởi lãnh thổ NLS, vì vậy nếu tôi chạy điều này như thể tôi đang ở Hoa Kỳ, thì nó hoạt động:

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

Nhưng truy vấn tương tự chạy ở Vương quốc Anh là một ngày nghỉ:

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

... và tôi cần điều chỉnh phép tính để phù hợp với điều đó:

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

Bạn cũng có thể chỉ định riêng ngôn ngữ được sử dụng cho tên ngày nếu bạn muốn:

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

Tài liệu cho to_char() với nls_date_language và ngày trong tuần, v.v. trong hướng dẫn hỗ trợ toàn cầu hóa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khai báo và hiển thị một biến trong Oracle

  2. Bảng đang thay đổi, trình kích hoạt / chức năng có thể không nhìn thấy nó (ngăn điểm trung bình giảm xuống dưới 2,5)

  3. Lọc nhật ký cảnh báo trong EM13c

  4. Cách định dạng số bằng dấu trừ / dấu cộng trong Oracle

  5. Chỉ nhận ngày không có thời gian trong Oracle