Hàm xử lý Date và Time trong SQLite



SQLite hỗ trợ 5 hàm xử lý Date và Time sau đây:

STTHàmVí dụ
1date(timestring, modifiers...)Hàm này trả về Date trong định dạng: YYYY-MM-DD
2time(timestring, modifiers...)Hàm này trả về Time dạng HH:MM:SS
3datetime(timestring, modifiers...)Trả về YYYY-MM-DD HH:MM:SS
4julianday(timestring, modifiers...)Hàm này trả về số ngày từ Greenwich 24/11, 4714 B.C
5strftime(timestring, modifiers...)Hàm này trả về Date được định dạng theo chuỗi định dạng được xác định như là tham số đầu tiên

Cả 5 hàm trên nhận một Time string như là một tham số. Time string này được theo sau bởi một hoặc nhiều Modifier. Hàm Strftime() cũng nhận một Format String làm tham số đầu tiên của nó. Phần tiếp theo sẽ trình bày cho bạn chi tiết về các Time String và Modifier.

Time String

Một Time String có thể là bất kỳ định dạng nào sau đây:

STTTime StringVí dụ
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM30-12-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

Bạn có thể sử dụng "T" như là ký tự hằng để phân biệt riêng rẽ Date và Time.

Modifier

Time String có thể được theo sau bởi 0 hoặc nhiều Modifier để thay đổi Date và Time được trả về bởi bất kỳ hàm nào ở trên. Các modifier được áp dụng từ trái sang phải. Dưới đây là các modifier 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

Formatter

SQLite cung cấp hàm strftime() rất thuận tiện để định dạng bất kỳ Date và Time nào. Bạn có thể sử dụng các thay thế sau để định dạng Date và Time cho mình.

Thay thếMiêu tả
%dNgày của thán, 01-31
%fGiây có phần thập phân, SS.SSS
%HGiờ, 00-23
%jNgày của năm, 001-366
%JJulian day, DDDD.DDDD
%mTháng, 00-12
%MPhút, 00-59
%sSố giây, từ 1970-01-01
%SGiây, 00-59
%wNgày của tuần, 0-6 (0 là Sunday)
%WTuần của năm, 01-53
%YNăm, YYYY
%%Ký hiệu %

Ví dụ

Bạn thử các ví dụ đa dạng sau ở dòng nhắc sqlite. Ví dụ sau để tính toán ngày hiện tại:

sqlite> SELECT date('now');
2013-05-07

Ví dụ sau để tính toán 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');
2013-05-31

Ví dụ sau để tính toán date và time cho một UNIX timestamp đã cho:

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

Ví dụ sau để tính toán date và time cho một UNIX timestamp đã cho và bù cho local time của bạn.

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

Ví dụ sau để tính toán UNIX timestamp hiện tại:

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

Ví dụ sau để tính toán số ngày từ ngày tuyên bố độc lập của Mỹ:

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

Ví dụ sau để tính toán số giây 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

Ví dụ sau để tính toán ngày của Thứ ba đầu tiên trong Tháng 10 cho năm hiện tại:

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

Ví dụ sau để tính toán thời gian (bằng giây) từ UNIX epoch (giống strftime() ngoại trừ hàm này bao gồm cả phần thập phân):

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

Để chuyển đổi giữa các giá trị UTC và Local time khi định dạng một Date, bạn sử dụng modifier là utc hoặc localtime như sau:

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

Các bài học SQLite phổ biến khác tại VietJack: