SQLite 函数

SQLite STRFTIME() 函数返回根据第一个参数指定的格式字符串格式化的日期。它是根据标准 C 库中的 strftime() 函数建模的,但有一些差异。

语法

STRFTIME(format, time-value, modifier, modifier, ...) 

参数

format

必填。 指定格式字符串以格式化输出的日期和时间字符串。它可以是以下之一:

格式描述
%d一月中的某天(1-31)
%f带小数秒的秒 (SS.SSS)
%H24 小时-小时时钟(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'
nownow 是用于返回当前日期的文字。
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'