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

3 cách trả lại múi giờ từ giá trị ngày giờ trong Oracle

Dưới đây là ba cách để trả về thông tin múi giờ từ một giá trị ngày giờ trong Cơ sở dữ liệu Oracle.

EXTRACT() Chức năng

EXTRACT(datetime) hàm được sử dụng để trích xuất các phần datetime khác nhau từ một giá trị datetime. Điều này bao gồm thông tin múi giờ.

Đây là một ví dụ:

SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;

Kết quả:

Australia/Darwin

Trong trường hợp này, tôi đã sử dụng TIMEZONE_REGION đối số để trích xuất vùng múi giờ.

Các đối số có sẵn để trích xuất thông tin múi giờ khác nhau là:

  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE
  • TIMEZONE_REGION
  • TIMEZONE_ABBR

Cũng có thể sử dụng TIMEZONE_OFFSET , mặc dù điều này không xuất hiện trong cú pháp tài liệu của Oracle cho hàm này.

Dưới đây là một ví dụ về cách lấy từ viết tắt của múi giờ:

SELECT 
    EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;

Kết quả:

ACST

Lưu ý rằng, khi sử dụng các đối số múi giờ ở trên, giá trị ngày giờ phải đánh giá thành biểu thức của kiểu dữ liệu TIMESTAMP WITH TIME ZONE hoặc TIMESTAMP WITH LOCAL TIME ZONE .

EXTRACT() hàm cũng chấp nhận các đối số cho các phần datetime khác, chẳng hạn như YEAR , MONTH , HOUR , v.v.

TO_CHAR(datetime) Chức năng

Chúng tôi cũng có thể sử dụng TO_CHAR(datetime) hoạt động như một phương pháp thay thế để nhận thông tin múi giờ từ giá trị ngày giờ.

Hàm này chấp nhận giá trị ngày giờ hoặc khoảng thời gian làm đối số đầu tiên và mô hình định dạng làm đối số thứ hai. Sau đó, hàm chuyển đổi giá trị thành kiểu dữ liệu VARCHAR2 ở định dạng được chỉ định.

Mô hình định dạng chỉ định định dạng để trả về giá trị ngày giờ / khoảng thời gian. Mô hình định dạng bao gồm một hoặc nhiều phần tử định dạng. Điều này cho phép chúng tôi tạo ra các kết quả một cách cẩn thận để phản ánh định dạng mong muốn của chúng tôi.

Nếu chúng tôi chỉ muốn trả lại thông tin múi giờ, chúng tôi có thể sử dụng một trong các yếu tố định dạng cho mục đích cụ thể đó.

Có một vài yếu tố định dạng khác nhau mà chúng tôi có thể sử dụng khi trả về thông tin múi giờ từ một giá trị ngày giờ.

Hãy bắt đầu với TZR phần tử định dạng:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZR'
    )
FROM DUAL;

Kết quả:

AUSTRALIA/DARWIN

Phần tử định dạng này trả về khu vực múi giờ. Nếu giá trị ngày giờ chỉ bao gồm độ lệch múi giờ, thì giá trị đó sẽ được trả về thay thế.

TZD phần tử định dạng có thể được sử dụng để trả về thông tin tiết kiệm ánh sáng ban ngày. Nó trả về thông tin múi giờ ở dạng viết tắt.

Ví dụ:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZD'
    )
FROM DUAL;

Kết quả:

ACST

Ngoài ra, chúng ta có thể sử dụng TZHTZM các phần tử định dạng để trả về giờ và phút của múi giờ, dựa trên độ lệch múi giờ.

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZH:TZM'
    )
FROM DUAL;

Kết quả:

+09:30

TZ_OFFSET() Chức năng

TZ_OFFSET() hàm trả về độ lệch múi giờ tương ứng với đối số dựa trên ngày câu lệnh được thực thi.

Đây là một ví dụ về việc sử dụng TZ_OFFSET() để trả về độ lệch múi giờ dựa trên vùng múi giờ được trả về bởi EXTRACT() chức năng:

SELECT TZ_OFFSET(
    EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;

Kết quả:

+09:30

Chúng tôi cũng có thể chuyển SESSIONTIMEZONE hoặc DBTIMEZONE thành TZ_OFFSET() để trả về múi giờ của phiên hiện tại và cơ sở dữ liệu của chúng tôi tương ứng:

SELECT 
    TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
    TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;

Kết quả:

   Session        DB 
__________ _________ 
+10:00     +00:00    

  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 xử lý Tiết kiệm ánh sáng ban ngày trong cơ sở dữ liệu Oracle

  2. Cách tạo PL / SQL SYS_REFCURSOR trong cơ sở dữ liệu Oracle

  3. Tự động tăng dần cho Oracle

  4. Làm thế nào để loại bỏ nhiều phân vùng khoảng thời gian dựa trên ngày?

  5. Làm thế nào để thay đổi ràng buộc