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

2 Hàm trả về số giây từ giá trị ngày giờ trong Oracle

Dưới đây là hai hàm có thể được sử dụng để trả về phần giây 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 phần giây.

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

SELECT 
    EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;

Kết quả:

37

Đó là SECOND từ khóa trích xuất phần giây từ giá trị ngày giờ. Điều này sẽ bao gồm bất kỳ giây phân số nào:

SELECT 
    EXTRACT(
        SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
        )
FROM DUAL;

Kết quả:

37.123456789

Chúng ta có thể lấy các phần ngày tháng khác bằng cách thay đổi nó thành từ khóa có liên quan. Ví dụ:YEAR , MONTH , HOUR , MINUTE , v.v.

Chúng tôi cũng có thể sử dụng hàm với các giá trị ngày giờ khác, chẳng hạn như DATE .

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 thức thay thế để lấy thành phần giây 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 ta chỉ muốn trả về giây, chúng ta có thể sử dụng một trong các phần tử định dạng trả về thành phần đó.

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

Rõ ràng nhất là SS phần tử định dạng:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;

Kết quả:

37

Như chúng ta có thể thấy, SS phần tử định dạng chỉ trả về phần giây chứ không trả về phần giây.

Giây phân số

Nếu chúng ta muốn bao gồm các giây phân số, chúng ta có thể sử dụng FF phần tử định dạng. Chúng tôi cũng có thể sử dụng X để chỉ định ký tự cơ số (ký hiệu dùng để tách phần nguyên khỏi phần phân số):

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Kết quả:

37.123456789

Cũng có thể giới hạn độ chính xác bằng cách thêm một số vào FF phần:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;

Kết quả:

37.12345

Số có thể là 1 thông qua 9 .

Mặc dù bạn có thể cung cấp một cách rõ ràng ký tự cơ số của riêng mình - ví dụ:một dấu dừng đầy đủ (. ), X phần tử định dạng có thể hữu ích để chuyển qua các ngôn ngữ / lãnh thổ khác nhau.

Khi tôi chạy các ví dụ trên, NLS_TERRITORY của tôi tham số đã được đặt thành AUSTRALIA , dẫn đến ký tự cơ số là một dấu chấm hết.

Đây là những gì sẽ xảy ra khi tôi thay đổi NLS_TERRITORY của mình tham số thành GERMANY :

ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Kết quả:

37.123456789

Bây giờ ký tự cơ số là một dấu phẩy.

vài giây trước nửa đêm

Chúng ta có thể sử dụng SSSSS để trả về những giây đã qua nửa đêm:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;

Kết quả:

00065

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xem một hình ảnh từ cột blob trong Oracle với JasperReports?

  2. Yêu cầu được đặt trong Trình quản lý đồng thời

  3. Không thể tải DLL “OraOps10.dll”

  4. Chọn số lượng (*) từ nhiều bảng

  5. Dấu thời gian ngủ đông với múi giờ