Date & Time trong SQLite

Combo 8 khóa học lập trình FullStack cực rẻ

Đây là gói combo được freetuts tạo ra nhằm giúp các bạn mua 8 khóa học tại FEDU với chi phí cực rẻ, nói chung là rẻ nhất :)

Xem tại đây

Combo 5 khóa học lập trình Frontend cực rẻ

Đây là gói combo được freetuts tạo ra nhằm giúp các bạn mua 5 khóa học tại FEDU với chi phí cực rẻ, nói chung là rẻ nhất :)

Xem tại đây

Trong bài học này mình sẽ cùng tìm hiểu date và time trong SQLite. SQLite hỗ trợ những loại date and time nào? Chúng ta sẽ cùng tìm hiểu trong nội dung tiếp theo.

1. Date và Time được hỗ trợ trong SQLite

SQLite hỗ trợ năm hàm ngày và giờ như sau:

Hàm Ví dụ
date(timestring, modifiers...) Trả về ngày ở định dạng: YYYY-MM-DD
time(timestring, modifiers...) Trả về thời gian là HH: MM: SS
datetime(timestring, modifiers...) Trả về YYYY-MM-DD HH: MM: SS
julianday(timestring, modifiers...) Trả về số ngày kể từ buổi trưa ở Greenwich vào November 24, 4714 B.C.
strftime(timestring, modifiers...) Trả về ngày được định dạng theo chuỗi định dạng ở đối số đầu tiên

Tất cả năm hàm ngày và thời gian trên đều lấy một time string làm đối số. time string được theo sau bởi không hoặc nhiều modifiers. Hàm strftime () cũng lấy một chuỗi định dạng làm đối số đầu tiên của nó. Phần sau đây sẽ cung cấp cho bạn chi tiết về các loại time string và modifier khác nhau.

2. Các loại Time String trong SQLite

Một time string có thể ở bất kỳ định dạng nào sau đây

Time String EX
YYYY-MM-DD 2019-12-30
YYYY-MM-DD HH:MM 2019-12-30 12:10
YYYY-MM-DD HH:MM:SS.SSS 2019-12-30 12:10:04.100
MM-DD-YYYY HH:MM 30-12-2019 12:10
HH:MM 12:10
YYYY-MM-DDTHH:MM 2019-12-30 12:10
HH:MM:SS 12:10:01
YYYYMMDD HHMMSS 20191230 121001
now 2019-04-09

Bạn có thể sử dụng chữ "T" làm ký tự ngăn cách ngày và giờ.

3. Các loại Modifier trong SQLite

Time string có thể được theo sau bởi 0 hoặc nhiều modifier sẽ thay đổi ngày/thời gian được trả về bởi bất kỳ 1 trong 5 hàm nói trên. Modifier được áp dụng từ trái sang phải.

Các modifer sau đây có sẵn trong SQLite.

  • NNN days
  • NNN hours
  • NNN minutes
  • NNN.NNNN seconds
  • NNN months
  • NNN years
  • start of month
  • start of year
  • start of day
  • weekday N
  • unixepoch
  • localtime
  • utc

4. Formatter trong SQLite

SQLite cung cấp một hàm strftime () rất tiện dụng để định dạng bất kỳ ngày và giờ nào. Bạn có thể sử dụng các thay thế (Substitution) sau để định dạng ngày và giờ của bạn.

Substitution Description
%d Ngày trong tháng, 01-31
%f Giây phân số, SS.SSS
%H Giờ, 00-23
%j Ngày trong năm, 001-366
%J Số ngày Julian, DDDD.DDDD
%m Tháng, 00-12
%M Phút, 00-59
%s Giây kể từ 1970-01-01
%S Giây, 00-59
%w Ngày trong tuần, 0-6 (0 là Chủ nhật)
%W Tuần trong năm, 01-53
%Y Năm, YYYY
%% ký hiệu % 

5. Ví dụ date và time trong SQLite

Bây giờ chúng ta hãy thử các ví dụ khác nhau bằng cách sử dụng dấu nhắc SQLite. Lệnh sau sẽ tính ngày hiện tại.

sqlite> SELECT date('now');
2019-04-07

Lệnh sau sẽ tính ngày cuối cùng của tháng hiện tại.

sqlite> SELECT date('now','start of month','+1 month','-1 day'); 
2019-04-30

Lệnh sau sẽ tính ngày và giờ cho dấu thời gian UNIX đã cho 1092941466.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Lệnh sau sẽ tính ngày và giờ cho dấu thời gian UNIX nhất định 1092941466 và bù cho múi giờ địa phương của bạn.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

Lệnh sau tính toán dấu thời gian UNIX hiện tại.

sqlite> SELECT strftime('%s','now');
1393348134

Lệnh sau tính toán số ngày kể từ khi ký Tuyên ngôn Độc lập Hoa Kỳ.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

Lệnh sau sẽ tính số giây kể từ một thời điểm cụ thể trong năm 2004.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Lệnh sau sẽ tính ngày thứ ba đầu tiên của tháng 10 cho năm hiện tại.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2019-10-01

Lệnh sau sẽ tính thời gian kể từ thời kỳ UNIX tính bằng giây (như strftime ('% s', 'now') ngoại trừ bao gồm phần phân đoạn).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Để chuyển đổi giữa UTC và giá trị thời gian cục bộ khi định dạng ngày, hãy sử dụng modifier utc hoặc giờ địa phương như sau:

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00

-------------------#####-------------------

Loạt bài SQLite được biên dịch từ TutorialsPoint.

Khóa học nên xem

Nguồn: freetuts.net