SQLite 函数
SQLite STRFTIME() 函数返回根据第一个参数指定的格式字符串格式化的日期。它是根据标准 C 库中的 strftime() 函数建模的,但有一些差异。
语法
STRFTIME(format, time-value, modifier, modifier, ...)
参数
format | 必填。 指定格式字符串以格式化输出的日期和时间字符串。它可以是以下之一:
格式 | 描述 |
---|
%d | 一月中的某天(1-31) | %f | 带小数秒的秒 (SS.SSS) | %H | 24 小时-小时时钟(00-23) | %j | 一年中的第几天(001-366) | %J | 儒略日数(小数) | %m | 月份(01-12) | %M | 分钟(00-59) | %s | 自 1970-01-01 以来的秒数 | %S | 秒 (00-59) | %w | 工作日(0-6) (0=星期日、1=星期一、2=星期二、3=星期三、4=星期四、5=星期五、6=星期六) | %W | 一年中的周数(00-53) | %Y | 年份 (0000-9999) | %% | % 作为文字 |
|
time-value | 必填。 指定时间值。它可以是以下之一:
时间值 | 描述 |
---|
YYYY-MM-DD | 日期值格式为"YYYY-MM-DD" | YYYY-MM-DD HH:MM | 日期值格式为"YYYY-MM-DD HH:MM" | YYYY-MM-DD HH :MM:SS | 日期值格式为"YYYY-MM-DD HH:MM:SS" | YYYY-MM-DD HH:MM: SS.SSS | 日期值格式为"YYYY-MM-DD HH:MM:SS.SSS" | YYYY-MM-DD THH:MM | 日期值格式为"YYYY-MM-DDTHH:MM",其中 T 是分隔日期和时间的文字字符 | YYYY-MM-DDTHH:MM:SS | 日期值格式为 'YYYY-MM-DDTHH:MM:SS ' 其中 T 是分隔日期和时间的文字字符 | YYYY-MM-DDTHH:MM :SS.SSS | 日期值格式为"YYYY-MM-DDTHH:MM:SS.SSS",其中 T 是分隔日期和时间的文字字符 | HH:MM | 格式为"HH:MM"的日期值 | HH:MM:SS | 日期值格式为 'HH:MM:SS' | HH:MM:SS.SSS | 日期值格式为 ' HH:MM:SS.SSS' | now | now 是用于返回当前日期的文字。 | DDDDDDDDDD | 儒略日期数字 |
|
修饰符、修饰符、 . .. | 可选。 指定修饰符。每个修饰符都是一个应用于其左侧时间值的转换。修饰符从左到右应用并且是累积的。可用的修饰符如下:
修饰符 | 描述 |
---|
[+-]NNN days | 日期添加/减去的天数 | [+- ]NNN 小时 | 日期添加/减去的小时数 | [+-]NNN minutes | 添加的分钟数/减去日期 | [+-]NNN.NNNN seconds | 添加/减去日期的秒数(和小数秒) | [+-]NNN months | 添加/减去日期的月数 | [+-][+-]NNN years | 日期添加/减去的年数 | start of month | 将日期移回到月初 | start of year | 将日期移回年初 | start of day | 将日期移回到一天的开始 | weekday N | 将日期向前移动到工作日编号为 N 的下一个日期 (0=星期日、1=星期一、2=星期二、3=星期三、4=星期四、5=星期五、6=星期六) | unixepoch | 与 DDDDDDDDDD 格式一起使用,将日期解释为 UNIX 时间(即:自 1970-01-01 以来的秒数) | julianday | 与 DDDDDDDDDD 格式一起使用,强制将时间值数字解释为儒略日数字 | auto | 与 DDDDDDDDDD 格式一起使用,将时间值解释为儒略日数字或 unix 时间戳,具体取决于其大小。 | localtime | 将日期调整为本地时间,假设时间值以 UTC 表示 | utc | 将日期调整为 utc,假设时间值以当地时间表示 |
|
返回值
返回根据指定格式字符串格式化的日期。
示例:当前日期和时间
SQLite 'now' 时间值可用于获取当前日期和时间。
SELECT STRFTIME('%Y-%m-%d', 'now');
Result: '2022-04-12'
SELECT STRFTIME('%Y-%m-%d %H:%M', 'now');
Result: '2022-04-12 07:15'
示例:每月的第一天
要获取该月的第一天,可以使用"start of month"修饰符。请参阅下面的示例:
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', 'start of month');
Result: '2018-08-01'
SELECT STRFTIME('%Y-%m-%d', 'now', 'start of month');
Result: '2022-04-01'
示例:该月的最后一天
要获取该月的最后一天,首先,"start of month"修饰符为用于计算月份的开始日期,然后添加 1 个月,然后减去 1 天。
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', 'start of month', '+1 month', '-1 day');
Result: '2018-08-31'
SELECT STRFTIME('%Y-%m-%d', 'now', 'start of month', '+1 month', '-1 day');
Result: '2022-04-30'
示例:添加/减去年份
添加/从时间值中减去年数,可以使用 [+-]NNN years修饰符。在下面的示例中,从给定的时间值中添加和减去 2 年。
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', '+2 years');
Result: '2020-08-18'
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', '-2 years');
Result: '2016-08-18'
示例:添加/减去天数
从时间中添加/减去天数-值,可以使用[+-]NNN days修饰符。在下面的示例中,给定时间值添加和减去 10 天。
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', '+10 days');
Result: '2018-08-28'
SELECT STRFTIME('%Y-%m-%d', '2018-08-18', '-10 days');
Result: '2018-08-08'