PL / SQL - Ngày và giờ

Trong chương này, chúng ta sẽ thảo luận về Ngày và Giờ trong PL / SQL. Có hai lớp kiểu dữ liệu liên quan đến ngày và giờ trong PL / SQL -

  • Các kiểu dữ liệu ngày giờ
  • Các kiểu dữ liệu khoảng thời gian

Các kiểu dữ liệu Ngày giờ là -

  • DATE
  • TIMESTAMP
  • TIMESTAMP VỚI Múi giờ
  • TIMESTAMP VỚI VÙNG GIỜ ĐỊA PHƯƠNG

Các kiểu dữ liệu Khoảng thời gian là -

  • INTERVAL NĂM ĐẾN THÁNG
  • INTERVAL NGÀY ĐẾN THỨ HAI

Giá trị trường cho kiểu dữ liệu ngày giờ và khoảng thời gian

Cả hai datetimeinterval kiểu dữ liệu bao gồm fields. Giá trị của các trường này xác định giá trị của kiểu dữ liệu. Bảng sau đây liệt kê các trường và giá trị có thể có của chúng cho ngày giờ và khoảng thời gian.

Tên trường Giá trị ngày giờ hợp lệ Giá trị khoảng thời gian hợp lệ
NĂM -4712 đến 9999 (không bao gồm năm 0) Mọi số nguyên khác không
THÁNG 01 đến 12 0 đến 11
NGÀY 01 đến 31 (giới hạn bởi các giá trị của THÁNG và NĂM, theo quy tắc của lịch cho ngôn ngữ) Mọi số nguyên khác không
GIỜ 00 đến 23 0 đến 23
PHÚT 00 đến 59 0 đến 59
THỨ HAI

00 đến 59,9 (n), trong đó 9 (n) là độ chính xác của giây phân số thời gian

Phần 9 (n) không áp dụng cho DATE.

0 đến 59,9 (n), trong đó 9 (n) là độ chính xác của khoảng phân số giây
TIMEZONE_HOUR

-12 đến 14 (phạm vi có thể thay đổi thời gian tiết kiệm ánh sáng ban ngày)

Không áp dụng cho DATE hoặc TIMESTAMP.

Không áp dụng
TIMEZONE_MINUTE

00 đến 59

Không áp dụng cho DATE hoặc TIMESTAMP.

Không áp dụng
TIMEZONE_REGION Không áp dụng cho DATE hoặc TIMESTAMP. Không áp dụng
TIMEZONE_ABBR Không áp dụng cho DATE hoặc TIMESTAMP. Không áp dụng

Các loại dữ liệu ngày giờ và chức năng

Sau đây là các kiểu dữ liệu Ngày giờ:

NGÀY

Nó lưu trữ thông tin ngày và giờ ở cả kiểu dữ liệu ký tự và số. Nó được làm bằng thông tin về thế kỷ, năm, tháng, ngày, giờ, phút và giây. Nó được chỉ định là -

TIMESTAMP

Nó là phần mở rộng của kiểu dữ liệu DATE. Nó lưu trữ năm, tháng và ngày của loại dữ liệu DATE, cùng với các giá trị giờ, phút và giây. Nó rất hữu ích để lưu trữ các giá trị thời gian chính xác.

TIMESTAMP VỚI Múi giờ

Đây là một biến thể của TIMESTAMP bao gồm tên khu vực múi giờ hoặc độ lệch múi giờ trong giá trị của nó. Chênh lệch múi giờ là chênh lệch (tính theo giờ và phút) giữa giờ địa phương và UTC. Loại dữ liệu này hữu ích để thu thập và đánh giá thông tin ngày tháng trên các vùng địa lý.

TIMESTAMP VỚI VÙNG GIỜ ĐỊA PHƯƠNG

Đây là một biến thể khác của TIMESTAMP bao gồm độ lệch múi giờ trong giá trị của nó.

Bảng sau cung cấp các hàm Datetime (trong đó, x có giá trị datetime):

S.Không Tên & Mô tả chức năng
1

ADD_MONTHS(x, y);

Thêm y tháng tới x.

2

LAST_DAY(x);

Trả về ngày cuối cùng của tháng.

3

MONTHS_BETWEEN(x, y);

Trả về số tháng giữa xy.

4

NEXT_DAY(x, day);

Trả về ngày giờ của ngày hôm sau saux.

5

NEW_TIME;

Trả về giá trị thời gian / ngày từ múi giờ do người dùng chỉ định.

6

ROUND(x [, unit]);

Vòng tròn x.

7

SYSDATE();

Trả về ngày giờ hiện tại.

số 8

TRUNC(x [, unit]);

Cắt ngắn x.

Các hàm dấu thời gian (trong đó, x có giá trị dấu thời gian) -

S.Không Tên & Mô tả chức năng
1

CURRENT_TIMESTAMP();

Trả về TIMESTAMP WITH TIME ZONE chứa thời gian phiên hiện tại cùng với múi giờ của phiên.

2

EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x)

Trích xuất và trả về một năm, tháng, ngày, giờ, phút, giây hoặc múi giờ từ x.

3

FROM_TZ(x, time_zone);

Chuyển đổi TIMESTAMP x và múi giờ được chỉ định bởi time_zone thành TIMESTAMP VỚI TIMEZONE.

4

LOCALTIMESTAMP();

Trả về TIMESTAMP chứa giờ địa phương trong múi giờ phiên.

5

SYSTIMESTAMP();

Trả về TIMESTAMP WITH TIME ZONE chứa thời gian cơ sở dữ liệu hiện tại cùng với múi giờ cơ sở dữ liệu.

6

SYS_EXTRACT_UTC(x);

Chuyển đổi TIMESTAMP VỚI TIMEZONE x thành TIMESTAMP có chứa ngày và giờ theo UTC.

7

TO_TIMESTAMP(x, [format]);

Chuyển đổi chuỗi x thành TIMESTAMP.

số 8

TO_TIMESTAMP_TZ(x, [format]);

Chuyển đổi chuỗi x thành TIMESTAMP VỚI TIMEZONE.

Ví dụ

Các đoạn mã sau minh họa việc sử dụng các chức năng trên:

Example 1

SELECT SYSDATE FROM DUAL;

Output -

08/31/2012 5:25:34 PM

Example 2

SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;

Output -

31-08-2012 05:26:14

Example 3

SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

Output -

01/31/2013 5:26:31 PM

Example 4

SELECT LOCALTIMESTAMP FROM DUAL;

Output -

8/31/2012 5:26:55.347000 PM

Các loại dữ liệu khoảng thời gian và chức năng

Sau đây là các kiểu dữ liệu Khoảng thời gian -

  • IINTERVAL YEAR TO MONTH - Nó lưu trữ một khoảng thời gian bằng cách sử dụng các trường datetime YEAR và MONTH.

  • INTERVAL DAY ĐẾN THỨ HAI - Nó lưu trữ một khoảng thời gian theo ngày, giờ, phút và giây.

Hàm khoảng thời gian

S.Không Tên & Mô tả chức năng
1

NUMTODSINTERVAL(x, interval_unit);

Chuyển đổi số x thành NGÀY LIÊN TỤC ĐẾN THỨ HAI.

2

NUMTOYMINTERVAL(x, interval_unit);

Chuyển đổi số x thành INTERVAL NĂM SANG THÁNG.

3

TO_DSINTERVAL(x);

Chuyển đổi chuỗi x thành INTERVAL DAY TO SEND.

4

TO_YMINTERVAL(x);

Chuyển đổi chuỗi x thành INTERVAL NĂM SANG THÁNG.