SQLite strftime()
是一個功能非常強大的函式,可以用來獲取日期和時間,並且還可以執行日期計算。
語法:
strftime(format, timestring [, modifier1, modifier2, ... modifier_n ] )
這裡,format
可以是以下任何一種:
編號 | 格式 | 解釋/描述 |
---|---|---|
1 | %Y |
4 位數表示年份(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 至 60) |
8 | %S |
秒(00至59) |
9 | %s |
自1970-01-01 以來的秒數 |
10 | %f |
小數秒(SS.SSS ) |
11 | %j |
一年之中的第幾天(001 至 366) |
12 | %J |
儒略日的數位值 |
這裡,timestring
是一個日期值,可以是以下任何一個:
編號 | 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 |
指定儒略日的日期數 |
編號 | 修辭符 | 描述 |
---|---|---|
1 | [+-]NNN years |
用於指定新增/減去日期的年數 |
2 | [+-]NNN months |
用於指定新增/減去日期的月數 |
3 | [+-]NNN days |
用於指定新增/減去日期的天數 |
4 | [+-]NNN hours |
用於指定新增/減去日期的小時數 |
5 | [+-]NNN minutes |
用於指定新增/減去日期的分鐘數 |
6 | [+-]NNN seconds |
用於指定新增/減去日期的秒數 |
7 | [+-]NNN.NNNN seconds |
用於指定新增/減去日期的秒數(和小數秒) |
8 | start of year |
用於將日期重新轉移到年初 |
9 | start of month |
用於將日期重新轉移到月初 |
10 | start of day |
用於將日期重新移動到一天的開始 |
11 | weekday N |
用於將日期向前移動到工作日數為N 的下一個日期(0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) |
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');
執行上面語句,得到以下結果 -
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>