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 '星期日'
WHEN 1 THEN '星期一'
WHEN 2 THEN '星期二'
WHEN 3 THEN '星期三'
WHEN 4 THEN '星期四'
WHEN 5 THEN '星期五'
WHEN 6 THEN '星期六'
END AS party_day;
这个查询将告诉你100天后的日期和那天是星期几。这对于派对计划来说非常完美!
就这样,伙计们!我们已经穿越了SQLite的日期和时间领域。记住,熟能生巧,所以不要害怕尝试这些函数。在你意识到之前,你将成为一个日期和时间的大师!快乐编码!
Credits: Image by storyset