SQLite库笔记:日期和时间函数

1. 函数概述。
SQLite支持7个日期和时间函数以下:
1。 | date(time-value, modifier, modifier, ...)。 | 返回。YYYY-MM-DD。格式。的日期。 |
2。 | time(time-value, modifier, modifier, ...)。 | 返回HH:MM:SS格式的时间。 |
3。 | datetime(time-value, modifier, modifier, ...)。 | 回YYYY-MM-DD HH:MM:SS。格式的日期时间。 |
4。 | julianday(time-value, modifier, modifier, ...)。 | 回到格林尼治时间公元前 4714 年 11 月 24 日中算起的天数。 |
5。 | unixepoch(time-value, modifier, modifier, ...)。 | 返回unix时间戳即1970-01-01 00:00:00 UTC以来的秒数。 |
6。 | strftime(format, time-value, modifier, modifier, ...)。 | 返回format指定格式的日期时间。 |
7。 | timediff(time-value A, time-value B)。 | 返回字符串字符串被描述为到达时。时间A必须添加到B。 |
标准中支持strftime()format格式字符串 C 库的 strftime()函数中最常见的替换项,以及两个新的替换项,即 %f 和 %J。 以下是有效 strftime()完整的替换列表,截至SQLite版本 3.46.0 (2024-05-23)。SQLite 早期版本可能不支持所有替换。如果没有定义或不支持,请看到替换结果为 NULL。
%d。 | 月份的第几天: 01-31。 |
%e。 | 月份的第几天,没有前导零: 1-31。 |
%f。 | 秒的小数部分: SS.SSS。 |
%F。 | ISO 8601日期: YYYY-MM-DD。 |
%G。 | ISO 8601年份对应%V。 |
%g。 | 2位ISO 8601年份对应%V。 |
%H。 | 小时: 00-24。 |
%I。 | 12小时制: 01-12。 |
%j。 | 年份的第几天: 001-366。 |
%J。 | #xff08;小数) |
%k。 | 没有前导零的小时: 0-24。 |
%l。 | 12小时,没有前导零: 1-12。 |
%m。 | 月份: 01-12。 |
%M。 | 分钟: 00-59。 |
%p。 | ൪取决于小时;AM" 或"PM" |
%P。 | ൪取决于小时;am" or "pm" |
%R。 | ISO 8601时间: HH:MM。 |
%s。 | 自1970-01-01以来的秒数。 |
%S。 | 秒: 00-59。 |
%T。 | ISO 8601时间: HH:MM:SS。 |
%U。 | 年的第几周(00-53)-从第一个星期日开始,第01周。 |
%u。 | 一周的第几天(1-7),周一是第一天。 |
%V。 | ISO 8601年中的第几周。 |
%w。 | 一周的第几天(0-6),周日为0。 |
%W。 | 一年的第几周 (00-53) – 从第一个星期日开始,第01周。 |
%Y。 | 年份: 0000-9999。 |
%%。 | %。 |
strftime()更灵活strftime()可以表示其他日期和时间函数:
函数。 | 等同于strftime()。 |
date(...)。 | strftime('%Y-%m-%d', ...)。 |
time(...)。 | strftime('%H:%M:%S', ...)。 |
datetime(...)。 | strftime('%Y-%m-%d %H:%M:%S', ...)。 |
julianday(...)。 | strftime('%J', ...)。 |
2. time-value时间字符串。
上表中的time-value时间字符串通常是一个字符串,可使用以下格式:
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。
“上述格式中标红”T“是单独的文字字符。倒数第二格式字符串“now",可转换为当前日期。
3. modifier修饰符。
对于除 timediff()除此之外的所有日期/时间函数, time-value 参数后面可以用零或多个modifier修改符号,这些修饰符更改日期时间。每个修饰符都用于左侧时间值的转换。注意,顺序很重要。可用的装饰符如下。
- NNN days。
- NNN hours。
- NNN minutes。
- NNN seconds。
- NNN months。
- NNN years。
- ±HH:MM。
- ±HH:MM:SS。
- ±HH:MM:SS.SSS。
- ±YYYY-MM-DD。
- ±YYYY-MM-DD HH:MM。
- ±YYYY-MM-DD HH:MM:SS。
- ±YYYY-MM-DD HH:MM:SS.SSS。
- ceiling。
- floor。
- start of month。
- start of year。
- start of day。
- weekday N。
- unixepoch。
- julianday。
- auto。
- localtime。
- utc。
- subsec。
- subsecond。
4. 示例。
计算当前日期:
sqlite> select date(); 2024-08-09。
unix时间戳计算日期和时间,unix时间戳计算日期和时间,xff1a;
sqlite> select datetime(1092941466, 'unixepoch');2004-08-19 18:51:06sqlite> select unixepoch('2004-08-19 18:51:06');1092941466。
计算2024-01-01 12:00:距离1970-01-01有多长时间?#xff1a;
sqlite> select timediff('2024-01-01 12:00:00', '1970-01-01');+0054-00-00 12:00:00.000。
计算当前日期(UTC)、当地时区的日期时间:
sqlite> select strftime('%F %T');2024-08-09 13:57:04sqlite> select strftime('%Y-%m-%d %H:%M:%S');2024-08-09 13:57:04sqlite> select strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');2024-08-09 21:57:04。
。
。
注意:SQLite默认为UTC时间获得当地时间可以添加'localtime'修饰符。分享让更多人看到