首页 > 数据库 > 数据库开发技术 > SQLite 中的日期和时间
如果觉得文章有用,欢迎关注❤️、点赞👍、推荐🎁
TEXT 存储日期和时间使用 ISO8601 格式的字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
REAL 存储日期时表示儒略日(Julian Day),也就是格里历(阳历)公元前 4714 年 11 月 24 日 UTC 正午到该时间的天数。
INTEGER 存储日期和时间时表示 Unix 时间戳,也就是 1970-01-01 00:00:00 UTC 到该时间的秒数。
date(time-value, modifier, modifier, …)
time(time-value, modifier, modifier, …)
datetime(time-value, modifier, modifier, …)
julianday(time-value, modifier, modifier, …)
strftime(format, time-value, modifier, modifier, …)
sqlite> select date();
2021-08-06
sqlite> select time();
03:57:53
sqlite> select datetime();
2021-08-06 03:58:39
sqlite> select julianday(), datetime();
2459432.66719566|2021-08-06 04:00:45
%d 一月中的第几天:00-31
%f 包含毫秒的秒数:SS.SSS
%H 小时:00-24
%j 一年中的第几天:001-366
%J 儒略日的天数
%m 月份:01-12
%M 分钟:00-59
%s 1970-01-01 以来的秒数
%S 秒数:00-59
%w 一周中的第几天:0-6,星期天为 0
%W 一年中的第几周:00-53
%Y 年份:0000-9999
%% 字符 %
sqlite> select strftime('The date and time: %Y-%m-%d %H:%M:%S');
The date and time: 2021-08-06 06:34:09
date(…) 等价于 strftime(’%Y-%m-%d’, …)
time(…) 等价于 strftime(’%H:%M:%S’, …)
datetime(…) 等价于 strftime(’%Y-%m-%d %H:%M:%S’, …)
julianday(…) 等价于 strftime(’%J’, …)
sqlite> select datetime(), strftime('%Y-%m-%d %H:%M:%S');
2021-08-06 06:35:00|2021-08-06 06:35:00
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
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
now
DDDDDDDDDD
-- 返回当前日期
SELECT date('now');
-- 返回当前 Unix 时间戳
SELECT strftime('%s','now');
-- 计算 2000 年以来的天数
SELECT julianday('now') - julianday('2000-01-01');
-- 计算 2000 年以来的秒数
SELECT strftime('%s','now') - strftime('%s','2000-01-01 00:00:00');
-- 计算 Unix 纪元以来的秒数,类似于 strftime('%s','now'),但是包含小数秒
SELECT (julianday('now') - 2440587.5)*86400.0;
2013-10-07 08:23:19.120
2013-10-07T08:23:19.120Z
2013-10-07 04:23:19.120-04:00
2456572.84952685
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
sqlite> select date('2021-01-01', '+5 days');
2021-01-06
-- 返回当前月份的最后一天
sqlite> select date('now','start of month','+1 month','-1 day');
2021-08-31
-- 返回当前年份中十月第一个星期二Compute the date of the first Tuesday in October for the current year.
sqlite> select date('now','start of year','+9 months','weekday 2');
2021-10-05
-- 返回 Unix 时间戳 1092941466 对应的日期和时间
sqlite> select datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
-- 计算 Unix 时间戳 1092941466 对应的时间,并且转换为本地时间
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-20 02:51:06
原文作者:SQL编程思想;如有侵权,请联系管理员删除。