Hàm xử lý Date và Time trong SQLite
SQLite hỗ trợ 5 hàm xử lý Date và Time sau đây:
STT | Hàm | Ví dụ |
---|---|---|
1 | date(timestring, modifiers...) | Hàm này trả về Date trong định dạng: YYYY-MM-DD |
2 | time(timestring, modifiers...) | Hàm này trả về Time dạng HH:MM:SS |
3 | datetime(timestring, modifiers...) | Trả về YYYY-MM-DD HH:MM:SS |
4 | julianday(timestring, modifiers...) | Hàm này trả về số ngày từ Greenwich 24/11, 4714 B.C |
5 | strftime(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:
STT | Time String | Ví dụ |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 30-12-2010 12:10 |
5 | HH:MM | 12:10 |
6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-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ả |
---|---|
%d | Ngày của thán, 01-31 |
%f | Giây có phần thập phân, SS.SSS |
%H | Giờ, 00-23 |
%j | Ngày của năm, 001-366 |
%J | Julian day, DDDD.DDDD |
%m | Tháng, 00-12 |
%M | Phút, 00-59 |
%s | Số giây, từ 1970-01-01 |
%S | Giây, 00-59 |
%w | Ngày của tuần, 0-6 (0 là Sunday) |
%W | Tuần của năm, 01-53 |
%Y | Nă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:
- SQLite - Xóa bảng
- SQLite - Truy vấn Insert
- SQLite - Truy vấn Select
- SQLite - Toán tử
- SQLite - Biểu thức
- SQLite - Mệnh đề Where