SQLite 時間函數

Loading

SQLite 的時間函數跟 MySQL / MariaDB 差蠻多的,以下來看幾個差異點.

  • Now
    SQLite 沒有 now 函數,但 在 SQLite now 是一個時間字串參數,可以透過 SQLite 的時間函數獲得目前的日期與時間.

    SELECT datetime('now');
    

    執行結果

    2022-10-04 09:13:26
    
  • datetime
    datetime 這個函數可以取代 mysql 的 DATE_SUB 或 DATE_ADD 函數 (可增加或減去指定時間).
    增加指定時間.

    SELECT datetime('now','1 day');
    

    執行結果

    2023-02-05 02:37:51
    

    減去指定時間.

    SELECT datetime('now','-1 day');
    

    執行結果

    2023-02-03 02:38:49
    

    可使用時間單位,詳細使用請參考 https://www.sqlite.org/lang_datefunc.html#modifiers

    • NNN days
    • NNN hours
    • NNN minutes
    • NNN.NNNN seconds
    • NNN months
    • NNN years
    • start of month
    • start of year
    • start of day
    • weekday N
    • unixepoch
    • julianday
    • auto
    • localtime
    • utc
  • date
    擷取日期.

    SELECT date('now');
    

    執行結果

    2022-10-04
    
  • time
    擷取時間.

    SELECT time('now');
    

    執行結果

    09:13:26
    
  • strftime
    在 MySQL 使用 DATE_FORMAT 函數依據指定格式來顯示日期時間,在 SQLite 使用 strftime.

    SELECT strftime('%Y-%m-%d %H:%M:%S','now');
    

    執行結果

    2022-10-04 09:16:54
    

    參數說明請參考官方文件 – https://www.sqlite.org/lang_datefunc.html

    • %d day of month: 00
    • %f fractional seconds: SS.SSS
    • %H hour: 00-24
    • %j day of year: 001-366
    • %J Julian day number (fractional)
    • %m month: 01-12
    • %M minute: 00-59
    • %s seconds since 1970-01-01
    • %S seconds: 00-59
    • %w day of week 0-6 with Sunday==0
    • %W week of year: 00-53
    • %Y year: 0000-9999
    • %% %
  • julianday
    在 MySQL 使用 UNIX_TIMESTAMP 函數回傳從 1970-01-0100:00:00 的秒數(無符號整數),在 SQLite 使用 julianday (回傳從格林威治 公元前 4714 年 11 月 24 日的天數).

    SELECT julianday('now');
    

    執行結果

    2459856.88878166
    
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料