SQLite strftime函数
SQLite strftime函数是一个非常强大的函数,它可以帮助您获取日期和时间,并且还可以进行日期计算。
语法:
strftime(format, timestring [, modifier1, modifier2, ... modifier_n ] )
这里, format 可以是以下任何一种:
索引 | 格式 | 解释 |
---|---|---|
1 | %Y | 四位数年份 (0000 到 9999) |
2 | %W | 年的周数 (00 到 53) |
3 | %w | 星期几 (0 到 6,其中0代表星期日) |
4 | %m | 月份 (01 到 12) |
5 | %d | 日期 (00 到 31) |
6 | %H | 小时 (00 到 24) |
7 | %M | 分钟 (00 到 25) |
8 | %S | 秒数 (00 到 59) |
9 | %s | 1970-01-01 以来的秒数 |
10 | %f | 小数秒 (SS.SSS) |
11 | %j | 一年中的第几天 (001 到 366) |
12 | %J | 日期的儒略日数值 |
这里, timestring 是一个日期值,可以是以下任何一个:
索引 | 时间字符串 | 描述 |
---|---|---|
1 | now | 用于返回当前日期的文字表达。 |
2 | YYYY-MM-DD | 用于指定日期值的格式为“YYYY-MM-DD”。 |
3 | YYYY-MM-DD HH:MM | 用于指定日期值的格式为“YYYY-MM-DD HH:MM”。 |
4 | YYYY-MM-DD HH:MM:SS | 用于指定日期值的格式为“YYYY-MM-DD HH:MM:SS”。 |
5 | YYYY-MM-DD HH:MM:SS.SSS | 用于指定日期值的格式为“YYYY-MM-DD HH:MM:SS.SSS”。 |
6 | HH:MM | 用于指定日期值的格式为“HH:MM”。 |
7 | HH:MM:SS | 用于指定日期值的格式为“HH:MM:SS”。 |
8 | HH:MM:SS.SSS | 用于指定日期值的格式为“HH:MM:SS.SSS”。 |
9 | YYYY-MM-DDTHH:MM | 用于指定日期值的格式为“YYYY-MM-DDTHH:MM”,其中t是一个文字字符,用于分隔日期和时间部分。 |
10 | YYYY-MM-DDTHH:MM:SS | 用于指定日期值的格式为“YYYY-MM-DDTHH:MM:SS”,其中t是一个文字字符,用于分隔日期和时间部分。 |
11 | YYYY-MM-DDTHH:MM:SS.SSS | 用于指定日期值的格式为“YYYY-MM-DDTHH:MM:SS.SSS”,其中t是一个文字字符,用于分隔日期和时间部分。 |
12 | DDDDDDDDDD | 用于指定儒略日日期数字。 |
modifier1,modifier2,…modifier_n: 修饰词是可选的。它们与timestring一起用于添加或减去时间、日期或年份。
索引 | modifier | 描述 |
---|---|---|
1 | [+-]NNN年 | 用于指定要添加/减去的年数 |
2 | [+-]NNN月 | 用于指定要添加/减去的月数 |
3 | [+-]NNN天 | 用于指定要添加/减去的天数 |
4 | [+-]NNN小时 | 用于指定要添加/减去的小时数 |
5 | [+-]NNN分钟 | 用于指定要添加/减去的分钟数 |
6 | [+-]NNN 秒 | 用于指定添加/减去的秒数到日期 |
7 | [+-]NNN.NNNN 秒 | 用于指定添加/减去的秒数(和小数秒)到日期 |
8 | start of year | 用于将日期调整为年初 |
9 | start of month | 用于将日期调整为月初 |
10 | start of day | 用于将日期调整为日初 |
11 | weekday N | 用于将日期调整为下一个星期 N 的日期 (0=周日, 1=周一, 2=周二, 3=周三, 4=周四, 5=周五, 6=周六) |
12 | unixepoch | 它与DDDDDDDDDD时间字符串一起使用,将日期解释为UNIX时间(即从1970-01-01开始的秒数) |
13 | localtime | 它用于将日期调整为本地时间,假设时间字符串是以UTC表示的 |
14 | utc | 它用于将日期调整为UTC时间,假设时间字符串是以本地时间表示的 |
示例1:获取当前日期:
SELECT strftime('%Y %m %d', 'now');
SELECT strftime('%Y-%m-%d %H:%M', 'now');
输出:
例2: 获取月份的第一天:
SELECT strftime('%Y-%m-%d', '2017-04-14', 'start of month');
SELECT strftime('%Y-%m-%d', 'now', 'start of month');
SELECT strftime('%Y-%m-%d', '2017-03-07', '-6 days');
SELECT strftime('%Y-%m-%d', 'now', '-13 days');
输出:
示例2:获取月份的最后一天:
SELECT strftime('%Y-%m-%d', '2017-03-07', 'start of month', '+1 month', '-1 day');
SELECT strftime('%Y-%m-%d', 'now', 'start of month', '+1 month', '-1 day');
SELECT strftime('%Y-%m-%d', '2017-03-07', '+24 days');
SELECT strftime('%Y-%m-%d', 'now', '+24 days');
输出:
示例3:增加/减去年份和天数:
SELECT strftime('%Y-%m-%d', '2017-04-14', '+2 years');
SELECT strftime('%Y-%m-%d', 'now', '-2 years');
SELECT strftime('%Y-%m-%d', '2017-04-14', '+7 days');
SELECT strftime('%Y-%m-%d', 'now', '-10 days');
输出: