SQLite strftime()是一個(gè)功能非常強(qiáng)大的函數(shù),可以用來(lái)獲取日期和時(shí)間,并且還可以執(zhí)行日期計(jì)算。
語(yǔ)法:
strftime(format, timestring [, modifier1, modifier2, ... modifier_n ] )
這里,format可以是以下任何一種:
| 編號(hào) | 格式 | 解釋/描述 |
|---|---|---|
| 1 | %Y |
4位數(shù)表示年份(0000至9999) |
| 2 | %W |
表示一年之中的第幾周(00至53) |
| 3 | %w |
星期幾(0到6,其中0表示星期日) |
| 4 | %m |
表示一年之中的第幾月(01至12) |
| 5 | %d |
表示一個(gè)月之中的第幾天(00至31) |
| 6 | %H |
小時(shí) (00 至 24) |
| 7 | %M |
分鐘 (00 至 60) |
| 8 | %S |
秒(00至59) |
| 9 | %s |
自1970-01-01以來(lái)的秒數(shù) |
| 10 | %f |
小數(shù)秒(SS.SSS) |
| 11 | %j |
一年之中的第幾天(001 至 366) |
| 12 | %J |
儒略日的數(shù)字值 |
這里,timestring是一個(gè)日期值,可以是以下任何一個(gè):
| 編號(hào) | timestring的值 |
描述 |
|---|---|---|
| 1 | now |
用來(lái)返回當(dāng)前日期的字面值 |
| 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是一個(gè)文本字符分隔符,用于分隔日期和時(shí)間。 |
| 10 | YYYY-MM-DDTHH:MM:SS |
指定格式化為YYYY-MM-DDTHH:MM:SS的日期值,其中T是一個(gè)文本字符分隔符,用于分隔日期和時(shí)間。 |
| 11 | YYYY-MM-DDTHH:MM:SS.SSS |
指定格式化為YYYY-MM-DDTHH:MM:SS.SSS的日期值,其中T是一個(gè)文本字符分隔符,用于分隔日期和時(shí)間。 |
| 12 | DDDDDDDDDD |
指定儒略日的日期數(shù) |
| 編號(hào) | 修辭符 | 描述 |
|---|---|---|
| 1 | [+-]NNN years |
用于指定添加/減去日期的年數(shù) |
| 2 | [+-]NNN months |
用于指定添加/減去日期的月數(shù) |
| 3 | [+-]NNN days |
用于指定添加/減去日期的天數(shù) |
| 4 | [+-]NNN hours |
用于指定添加/減去日期的小時(shí)數(shù) |
| 5 | [+-]NNN minutes |
用于指定添加/減去日期的分鐘數(shù) |
| 6 | [+-]NNN seconds |
用于指定添加/減去日期的秒數(shù) |
| 7 | [+-]NNN.NNNN seconds |
用于指定添加/減去日期的秒數(shù)(和小數(shù)秒) |
| 8 | start of year |
用于將日期重新轉(zhuǎn)移到年初 |
| 9 | start of month |
用于將日期重新轉(zhuǎn)移到月初 |
| 10 | start of day |
用于將日期重新移動(dòng)到一天的開(kāi)始 |
| 11 | weekday N |
用于將日期向前移動(dòng)到工作日數(shù)為N的下一個(gè)日期(0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) |
| 12 | unixepoch |
它與DDDDDDDDDD時(shí)間字符串一起用于將日期解釋為UNIX時(shí)間(即:自1970-01-01以來(lái)的秒數(shù)) |
| 13 | localtime |
用于將日期調(diào)整為本地時(shí)間,假設(shè)時(shí)間戳以UTC表示 |
| 14 | utc |
它用于將日期調(diào)整為utc,假設(shè)時(shí)間戳以本地時(shí)間表達(dá) |
示例1:
檢索當(dāng)前日期:
SELECT strftime('%Y %m %d', 'now');
SELECT strftime('%Y-%m-%d %H:%M', 'now');
執(zhí)行上面語(yǔ)句,得到以下結(jié)果 -
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');
執(zhí)行上面代碼,得到以下結(jié)果 -
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');
執(zhí)行上面代碼,得到以下結(jié)果 -
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:
在當(dāng)前日期時(shí)間上添加/減去年數(shù)和天數(shù):
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');
執(zhí)行上面代碼,得到以下結(jié)果 -
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>