time、date、datetime、strftime, julianday 格式
函數格式
time(timestring, modifier, modifier, ...)
date(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
說明
- timestring 為時間串或者資料表字段,其格式如下:
序号 | 時間字元串 | 執行個體 |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 30-12-2010 12:10 |
5 | HH:MM | 12:10 |
6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-05-07 |
- modifier 為修飾符, 有如下格式:
序号 | 格式 | 備注 |
---|---|---|
1 | NNN days | |
2 | NNN hours | |
3 | NNN minutes | |
4 | NNN.NNNN seconds | |
5 | NNN months | |
6 | NNN years | |
7 | start of month | |
8 | start of year | |
9 | start of day | |
10 | weekday N | |
11 | unixepoch | UNIX 時間戳 |
12 | localtime | |
13 | utc |
- strftime的 format 格式化為如下
序号 | 替換 | 描述 |
---|---|---|
1 | %d | 一月中的第幾天,01-31 |
2 | %f | 帶小數部分的秒,SS.SSS |
3 | %H | 小時,00-23 |
4 | %j | 一年中的第幾天,001-366 |
5 | %J | 儒略日數,DDDD.DDDD |
6 | %m | 月,00-12 |
7 | %M | 分,00-59 |
8 | %s | 從 1970-01-01 算起的秒數 |
9 | %S | 秒,00-59 |
10 | %w | 一周中的第幾天,0-6 (0 is Sunday) |
11 | %W | 一年中的第幾周,01-53 |
12 | %Y | 年,YYYY |
13 | %% | % symbol |
舉例
- 擷取目前時間(UTC)
sqlite> select datetime('now');
datetime('now')
2018-04-28 09:06:19
- 擷取本地時間
sqlite> select datetime('now', 'utc');
datetime('now', 'utc')
2018-04-28 01:06:20
- 格式化時間
将utc事件轉換為距離1970-01-01 00:00:00的描述
sqlite> select strftime('%s', 'now', 'utc');
strftime('%s', 'now', 'utc')
1524877737
将目前時間轉換為距離1970-01-01 08:00:00的描述,【時區在起始時間也是相關!】
sqlite> select strftime('%s', 'now', 'localtime');
strftime('%s', 'now', 'localtime')
1524935345
- 格式化時間
datetime()
原始資料:
sqlite> select * from test;
id|s1|s2|s3|s4|s5|s6|s7|status
7|1|||||1900-01-01 08:00:00||0
8|2|||||1900-01-01 08:00:00||0
9|2|||||1900-01-01 08:00:00||1
UTC 時間
sqlite> select datetime(s6, 'utc'), s6 from test;
datetime(s6, 'utc')|s6
1900-01-01 00:00:00|1900-01-01 08:00:00
1900-01-01 00:00:00|1900-01-01 08:00:00
1900-01-01 00:00:00|1900-01-01 08:00:00
Localtime時間
sqlite> select datetime(s6, 'localtime'), s6 from test;
datetime(s6, 'localtime')|s6
1900-01-01 16:00:00|1900-01-01 08:00:00
1900-01-01 16:00:00|1900-01-01 08:00:00
1900-01-01 16:00:00|1900-01-01 08:00:00
strftime()
sqlite> select strftime('%d', s6, 'localtime'), s6 from test limit ;
strftime('%d', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%f', s6, 'localtime'), s6 from test limit ;
strftime('%f', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%H', s6, 'localtime'), s6 from test limit ;
strftime('%H', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%j', s6, 'localtime'), s6 from test limit ;
strftime('%j', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%J', s6, 'localtime'), s6 from test limit ;
strftime('%J', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%m', s6, 'localtime'), s6 from test limit ;
strftime('%m', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%M', s6, 'localtime'), s6 from test limit ;
strftime('%M', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%S', s6, 'localtime'), s6 from test limit ;
strftime('%S', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%w', s6, 'localtime'), s6 from test limit ;
strftime('%w', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%W', s6, 'localtime'), s6 from test limit ;
strftime('%W', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%Y', s6, 'localtime'), s6 from test limit ;
strftime('%Y', s6, 'localtime')|s6
|-- ::
sqlite> select strftime('%%', s6, 'localtime'), s6 from test limit ;
strftime('%%', s6, 'localtime')|s6
%|-- ::
%s 為何如下呢?
sqlite> select strftime('%s', s6, 'localtime'), s6 from test limit ;
strftime('%s', s6, 'localtime')|s6
-|-- ::
sqlite> select strftime('%s', s6, 'utc'), s6 from test limit ;
strftime('%s', s6, 'utc')|s6
-|-- ::
參考連結:http://www.runoob.com/sqlite/sqlite-date-time.html