日期时间类型

SQLite 没有针对日期或时间值的单独数据类型。

ISO8601 字符串

内置关键字 CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP 以 ISO8601 格式返回字符串:

> SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
CURRENT_DATE  CURRENT_TIME  CURRENT_TIMESTAMP  
------------  ------------  -------------------
2016-07-08    12:34:56      2016-07-08 12:34:56

所有内置日期/时间函数也可以理解这些值 :

> SELECT strftime('%Y', '2016-07-08');
2016

朱利安日数

内置的日期/时间函数解析数作为儒略日

> SELECT datetime(2457578.02425926);
2016-07-08 12:34:56

julianday() 函数将任何支持的日期/时间值转换为 Julian 日期数:

> SELECT julianday('2016-07-08 12:34:56');
2457578.02425926

Unix 时间戳

内置的日期/时间功能, 如可以解释数字的 Unix 时间戳unixepoch 修改:

> SELECT datetime(0, 'unixepoch');
1970-01-01 00:00:00 

strftime() 函数可以将任何支持的日期/时间值转换为 Unix 时间戳:

> SELECT strftime('%s', '2016-07-08 12:34:56');
1467981296 

不支持的格式

可以在数据库中以任何其他格式存储日期/时间值,但内置日期/时间函数不会解析它们,并返回 NULL:

> SELECT time('1:30:00');   -- not two digits

> SELECT datetime('8 Jul 2016');