SQLite - 日期與時間
你好,有抱負的程式設計師們!今天,我們將要深入SQLite中日期和時間的迷人世界。作為你們親切友善的鄰居計算機老師,我將通過大量的例子和解釋來引導你們進行這次旅行。那麼,請系好安全帶,我們開始吧!
時間字符串
在SQLite中,日期和時間通常以文本字符串的形式存儲。這可能一開始看起來有些奇怪,但其實它非常靈活且容易操作。讓我們看看一些常見的格式:
ISO8601 格式
最常見的格式是ISO8601,它的樣子如下:
YYYY-MM-DD HH:MM:SS
例如:
'2023-06-15 14:30:00'
這代表2023年6月15日下午2:30。
其他接受的格式
SQLite對日期和時間格式非常寬容。這裡有一些其他接受的格式:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
讓我們試一個例子:
CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);
INSERT INTO events (event_name, event_date) VALUES
('生日派對', '2023-07-01'),
('電影之夜', '2023-07-15 20:00'),
('晨跑', '06:30');
SELECT * FROM events;
這將創建一個包含不同日期和時間格式的表。相當酷,不是嗎?
修飾語
現在,讓我們來談談修飾語。這些是特殊的關鍵字,讓我們可以操作日期和時間。它們就像是我們時間字符串的魔杖!
常見修飾語
這裡是一個常見修飾語的表格:
修飾語 | 描述 |
---|---|
+N days |
將N天加到日期上 |
-N days |
從日期中減去N天 |
start of month |
將日期改為該月的第一天 |
start of year |
將日期改為該年的第一天 |
weekday N |
將日期改為下個星期的N天(0=星期日,1=星期一,等等) |
讓我們看看這些修飾語的實際應用:
SELECT
date('now') AS today,
date('now', '+1 day') AS tomorrow,
date('now', '-1 month') AS last_month,
date('now', 'start of month') AS month_start,
date('now', 'weekday 1') AS next_monday;
這個查詢將顯示今天的日期、明天的日期、一個月前的日期、當月的第一天和下個星期一的日期。相當方便,對吧?
格式化器
格式化器就像是日期和時間世界的造型師。它們幫助我們以不同的方式呈現我們的日期和時間。
strftime() 函數
我們用於格式化的主要函數是strftime()
。它代表“字符串格式化時間”。這裡是基本語法:
strftime(format, time-string, modifiers...)
讓我們看看一些常見的格式指定符:
指定符 | 描述 |
---|---|
%Y |
年(4位數) |
%m |
月(01-12) |
%d |
月份中的日(01-31) |
%H |
小時(00-23) |
%M |
分鐘(00-59) |
%S |
秒(00-59) |
%w |
星期中的日(0-6,星期日=0) |
現在,讓我們把所有這些東西放在一起:
SELECT
strftime('%Y-%m-%d', 'now') AS date_only,
strftime('%H:%M', 'now') AS time_only,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS date_time,
strftime('%w', 'now') AS day_of_week,
strftime('%Y-%m-%d', 'now', '+1 month') AS next_month;
這個查詢將顯示當前日期、當前時間、當前日期和時間、星期中的日(0-6)以及從現在起一個月的日期。
一個有趣的例子
讓我們以一個有趣的例子結束。想像你正在計劃一個派對,你想知道100天後是星期幾:
SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Sunday'
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
WHEN 3 THEN 'Wednesday'
WHEN 4 THEN 'Thursday'
WHEN 5 THEN 'Friday'
WHEN 6 THEN 'Saturday'
END AS party_day;
這個查詢將告訴你100天後的日期和那天的星期。對於派對計劃來說,這是完美的!
這就是它,各位!我們已經穿越了SQLite日期和時間的土地。記住,熟能生巧,所以不要害怕試驗這些函數。在你還沒有察覺之前,你將會成為日期和時間的魔法師!快樂編程!
Credits: Image by storyset