SQLite strftime()函数日期日间格式化

SQLite strftime()是一个功能非常强大的函数,可以用来获取日期和时间,并且还可以执行日期计算。

语法:

strftime(format, timestring [, modifier1, modifier2, ... modifier_n ] )

这里,format可以是以下任何一种:

编号格式解释/描述
1%Y4位数表示年份(0000至9999)
2%W表示一年之中的第几周(00至53)
3%w星期几(06,其中0表示星期日)
4%m表示一年之中的第几月(01至12)
5%d表示一个月之中的第几天(00至31)
6%H小时 (00 至 24)
7%M分钟 (00 至 60)
8%S秒(00至59)
9%s1970-01-01以来的秒数
10%f小数秒(SS.SSS)
11%j一年之中的第几天(001 至 366)
12%J儒略日的数字值

这里,timestring是一个日期值,可以是以下任何一个:

编号timestring的值描述
1now用来返回当前日期的字面值
2YYYY-MM-DD指定格式为YYYY-MM-DD的日期值
3YYYY-MM-DD HH:MM指定格式为YYYY-MM-DD HH:MM的日期值
4YYYY-MM-DD HH:MM:SS指定格式为YYYY-MM-DD HH:MM:SS的日期值
5YYYY-MM-DD HH:MM:SS.SSS指定格式为YYYY-MM-DD HH:MM:SS.SSS的日期值
6HH:MM指定格式为HH:MM的日期值
7HH:MM:SS指定格式为HH:MM:SS的日期值
8HH:MM:SS.SSS指定格式为HH:MM:SS.SSS的日期值
9YYYY-MM-DDTHH:MM指定格式化为YYYY-MM-DDTHH:MM的日期值,其中T是一个文本字符分隔符,用于分隔日期和时间。
10YYYY-MM-DDTHH:MM:SS指定格式化为YYYY-MM-DDTHH:MM:SS的日期值,其中T是一个文本字符分隔符,用于分隔日期和时间。
11YYYY-MM-DDTHH:MM:SS.SSS指定格式化为YYYY-MM-DDTHH:MM:SS.SSS的日期值,其中T是一个文本字符分隔符,用于分隔日期和时间。
12DDDDDDDDDD指定儒略日的日期数
  • modifier1, modifier2, … modifier_n: 这些修饰符是可选的。这些字符与时间字符串一起使用来添加或减少时间,日期或年份。
编号修辞符描述
1[+-]NNN years用于指定添加/减去日期的年数
2[+-]NNN months用于指定添加/减去日期的月数
3[+-]NNN days用于指定添加/减去日期的天数
4[+-]NNN hours用于指定添加/减去日期的小时数
5[+-]NNN minutes用于指定添加/减去日期的分钟数
6[+-]NNN seconds用于指定添加/减去日期的秒数
7[+-]NNN.NNNN seconds用于指定添加/减去日期的秒数(和小数秒)
8start of year用于将日期重新转移到年初
9start of month用于将日期重新转移到月初
10start of day用于将日期重新移动到一天的开始
11weekday N用于将日期向前移动到工作日数为N的下一个日期(0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday)
12unixepoch它与DDDDDDDDDD时间字符串一起用于将日期解释为UNIX时间(即:自1970-01-01以来的秒数)
13localtime用于将日期调整为本地时间,假设时间戳以UTC表示
14utc它用于将日期调整为utc,假设时间戳以本地时间表达

示例1:

检索当前日期:

SELECT strftime('%Y %m %d', 'now');  
SELECT strftime('%Y-%m-%d %H:%M', 'now');

执行上面语句,得到以下结果 –

sqlite> SELECT strftime('%Y %m %d', 'now');
2017 05 24
sqlite> SELECT strftime('%Y-%m-%d %H:%M', 'now');
2017-05-24 19:04
sqlite>

示例2:

检索本月的第一天:

SELECT strftime('%Y-%m-%d', '2017-09-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');

执行上面代码,得到以下结果 –

sqlite> SELECT strftime('%Y-%m-%d', '2017-09-14', 'start of month');
2017-09-01
sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month');
2017-05-01
sqlite> SELECT strftime('%Y-%m-%d', '2017-03-07', '-6 days');
2017-03-01
sqlite> SELECT strftime('%Y-%m-%d', 'now', '-13 days');
2017-05-11
sqlite>

示例3:

检索本月的最后一天:

SELECT strftime('%Y-%m-%d', '2017-12-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-08-07', '+24 days');  
SELECT strftime('%Y-%m-%d', 'now', '+24 days');

执行上面代码,得到以下结果 –

sqlite> SELECT strftime('%Y-%m-%d', '2017-12-07', 'start of month', '+1 month', '-1 day');
2017-12-31
sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month', '+1 month', '-1 day');
2017-05-31
sqlite> SELECT strftime('%Y-%m-%d', '2017-08-07', '+24 days');
2017-08-31
sqlite> SELECT strftime('%Y-%m-%d', 'now', '+24 days');
2017-06-17
sqlite>

示例4:

在当前日期时间上添加/减去年数和天数:

SELECT strftime('%Y-%m-%d', '2017-11-14', '+2 years');  
SELECT strftime('%Y-%m-%d', 'now', '-2 years');  
SELECT strftime('%Y-%m-%d', '2017-10-14', '+7 days');  
SELECT strftime('%Y-%m-%d', 'now', '-10 days');

执行上面代码,得到以下结果 –

sqlite> SELECT strftime('%Y-%m-%d', '2017-11-14', '+2 years');
2019-11-14
sqlite> SELECT strftime('%Y-%m-%d', 'now', '-2 years');
2015-05-24
sqlite> SELECT strftime('%Y-%m-%d', '2017-10-14', '+7 days');
2017-10-21
sqlite> SELECT strftime('%Y-%m-%d', 'now', '-10 days');
2017-05-14
sqlite>

        原文作者:SQLite教程
        原文地址: https://www.yiibai.com/sqlite/strftime.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞