SQLite strftime()函數日期日間格式化
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
指定儒略日的日期數
- 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
用於指定添加/減去日期的秒數(和小數秒)
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>