SQLite strftime()函數日期日間格式化

SQLite strftime()是一個功能非常強大的函數,可以用來獲取日期和時間,並且還可以執行日期計算。

語法:

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

這裏,format可以是以下任何一種:

編號

格式

解釋/描述

1

%Y

4位數表示年份(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

%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>