SQLite 的日期時間函數[筆記]

來源:互聯網
上載者:User

這篇文章是根據 SQLite 官方 WIKI 裡的內容翻譯,如果有什麼翻譯不當的地方希望大家指出,畢竟我的英文水平實在很差。 SQLite 包括以下五個時間函數:

  1. date(日期時間字串, 修正符, 修正符, ……)
  2. time(日期時間字串, 修正符, 修正符, ……)
  3. datetime(日期時間字串, 修正符, 修正符, ……)
  4. julianday(日期時間字串, 修正符, 修正符, ……)
  5. strftime(日期時間格式, 日期時間字串, 修正符, 修正符, ……)

上述五個函數需要一個日期時間字串做參數,後面可以跟零到多個修正符參數。而 strftime() 函數還需要一個日期時間格式字串做第一個參數。

  1. date() 函數返回一個以 “YYYY-MM-DD” 為格式的日期;
  2. time() 函數返回一個以 “YYYY-MM-DD HH:MM:SS” 為格式的日期時間;
  3. julianday() 函數返回一個天數,從格林威治時間公元前4714年11月24號開始算起;
  4. strftime() 函數返回一個經過格式話的日期時間,它可以用下面的符號對日期和時間進行格式化:
    %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
    %%  % 百分比符號

其他四個函數都可以用 strftime() 函數來表示:

  1. date(…)         ->   strftime(“%Y-%m-%d”,…)
  2. time(…)         ->   strftime(“%H:%M:%S”,…)
  3. datetime(…)     ->   strftime(“%Y-%m-%d %H:%M:%S”,…)
  4. julianday(…)    ->   strftime(“%J”,…)

日期時間字串

可以用以下幾種格式:

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now
  12. DDDD.DDDD

在第五種到第七種格式中的“T”是一個分割日期和時間的字元;第八種到第十種格式只代表2000-01-01日的時間,第十一種格式的’now’表示返回一個當前的日期和時間,使用格林威治時間(UTC);第十二種格式表示一個 Julian Day Numbers。

修正符

日期和時間可以使用下面的修正符來更改日期或時間:

  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 week
  10. start of day
  11. weekday N
  12. unixepoch
  13. localtime
  14. utc

前六個修正符就是簡單的增加指定數值的時間和日期;第七到第十個修正符表示返回當前日期的開始;第十一個修正符表示返回下一個星期是N的日期和時間;第十二個修正符表示返回從1970-01-01開始算起的秒數;第十三個修正符表示返回本地時間。

下面舉一些例子:

  1. 電腦目前時間
    SELECT date(‘now’)
  2. 電腦當前月份的最後一天
    SELECT date(‘now’,’start of month’,’+1 month’,’-1 day’)
  3. 計算UNIX 時間戳記1092941466表示的日期和時間
    SELECT datetime(‘1092941466’,’unixepoch’)
  4. 計算 UNIX 時間戳記1092941466 表示的本地日期和時間
    SELECT datetime(‘1092941466’,’unixepoch’,’localtime’)
  5. 電腦當前UNIX 時間戳記
    SELECT strftime(‘%s’,’now’)
  6. 兩個日期之間相差多少天
    SELECT jolianday(‘now’)-jolianday(‘1981-12-23’)
  7. 兩個日期時間之間相差多少秒
    SELECT julianday('now')*86400 - julianday('2004-01-01 02:34:56')*86400
  8. 計算今年十月份第一個星期二的日期
    SELECT date('now','start of year','+9 months','weekday 2');
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.