SQLite時間函數&日期時間、字符串、時間戳互相轉換

‘now’爲當前日期時間函數

**轉字符串、時間
SELECT date('now');     -->結果:2018-05-05
SELECT time('now');     -->結果:06:55:38
SELECT datetime('now'); -->結果:2018-05-05 06:55:38
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');    -->結果:2018-05-05 06:55:38
1
2
3
4
**轉時間戳
select strftime('%s','now');    -->結果:1525502284
select strftime('%s','2018-05-05');     -->結果:1525478400
1
2
時間戳轉時間、字符串
select datetime(1525502284, 'unixepoch', 'localtime');  -->結果:2018-05-05 14:38:04
--對參數不理解可參考文末「修飾符」
1
2
擴展:SQLite的五個時間函數:
date(timestring, modifier, modifier, …)**:以 YYYY-MM-DD 格式返回日期
time(timestring, modifier, modifier, …)**:以 HH:MM:SS 格式返回時間
datetime(timestring, modifier, modifier, …)**:以 YYYY-MM-DD HH:MM:SS 格式返回日期時間
julianday(format, timestring, modifier, modifier, ..):返回從格林尼治時間的公元前 4714 年 11 月 24 日正午算起的天數
strftime(format, timestring, modifier, modifier, ..):根據第一個參數指定的格式字符串返回格式化的日期
講道理其餘四個函數均可以用 strftime() 函數來表示:
date(…) –> strftime(‘%Y-%m-%d’,…) 
time(…) –> strftime(‘%H:%M:%S’,…) 
datetime(…) –> strftime(‘%Y-%m-%d %H:%M:%S’,…) 
julianday(…) –> strftime(‘%J’,…).net

來看看各參數的取值格式(文末舉例):
日期時間字符串(timestring):
序號    日期時間字符串    實例
1    YYYY-MM-DD    2018-05-05
2    YYYY-MM-DD HH:MM    2018-05-05 12:10
3    YYYY-MM-DD HH:MM:SS.SSS    2018-05-05 15:39:20.100
4    MM-DD-YYYY HH:MM    05-05-2018 12:10
5    HH:MM    同理
6    YYYY-MM-DDTHH:MM    同理
7    HH:MM:SS    同理
8    YYYYMMDD HHMMSS    同理
9    now    2018-05-05 15:39:20
10    DDDDDDDDDD    1525478400(時間戳)
strftime() 函數,格式化串(format):
符號    描述
%d    一月中的第幾天 01-31
%f    小數形式的秒,SS.SSSS
%H    小時 00-24
%j    一年中的第幾天 01-366
%J    Julian Day Numbers
%m    月份 01-12
%M    分鐘 00-59
%s    從 1970-01-01日開始計算的秒數
%S    秒 00-59
%w    星期,0-6,0是星期天
%W    一年中的第幾周 00-53
%Y    年份 0000-9999
%%    % 百分號
修飾符(modifier):
序號    符號    做用
1    [+-]NNN years    增長/減去指定數值的年
2    [+-]NNN months    增長/減去指定數值的月
3    [+-]NNN days    增長/減去指定數值的天
4    [+-]NNN hours    增長/減去指定數值的小時
5    [+-]NNN minutes    增長/減去指定數值的分鐘
6    [+-]NNN.NNNN seconds    增長/減去指定數值的秒
7    start of year    當前日期的開始年
8    start of month    當前日期的開始月
9    start of day    當前日期的開始日
11    weekday N    表示返回下一個星期是N的日期和時間
12    unixepoch    用於將日期解釋爲UNIX時間(即:自1970-01-01以來的秒數,也就是時間戳)
13    localtime    表示返回本地時間
14    utc    表示返回UTC(世界統一時間)時間
重點:修飾符運用實例
SELECT datetime('now'); -->結果:2018-05-05 08:10:26(和本機時間可能不一致,時區問題請看使用‘localtime’修飾符後的變化)
SELECT datetime('now','1 years');-->結果:2019-05-05 08:10:26
SELECT datetime('now','1 months');-->結果:2018-06-05 08:10:26
SELECT datetime('now','1 days');-->結果:2018-05-06 08:10:26
SELECT datetime('now','1 hours');-->結果:2018-05-05 09:10:26
SELECT datetime('now','1 minutes');-->結果:2018-05-05 08:11:26
SELECT datetime('now','1 seconds');-->結果:2018-05-05 08:10:27unix

SELECT datetime('now','start of year');-->結果:2018-01-01 00:00:00
SELECT datetime('now','start of month');-->結果:2018-05-01 00:00:00
SELECT datetime('now','start of day');-->結果:2018-05-05 00:00:00orm

SELECT datetime('now','weekday 0');-->結果:2018-05-06 08:10:26
(解釋:2018-05-05是週六,「weekday 0」表示返回下週的週日(系統默認以週日爲一週的開始0),明天06號是週日,因此,返回了2018-05-06)
SELECT datetime('1525478400','unixepoch');-->結果:2018-05-05 00:00:00(unixepoch通常用於解釋時間戳)
SELECT datetime('now','localtime');-->結果:2018-05-05 16:10:26(你會發現這個時間比沒使用‘localtime’參數的時間多了8個小時,由於中國是東八時區)
SELECT datetime('now','utc');-->結果:2018-05-05 00:10:26(時區問題)
--------------------- 
做者:markix 
來源:CSDN 
原文:https://blog.csdn.net/qq_31772441/article/details/80205560 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!blog

相關文章
相關標籤/搜索