首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQLite 日期時間函數完整指南:語法、格式與實戰範例

     編輯:MySQL 資料庫相關知識

前言

SQLite 雖輕量,但內建的日期時間處理功能相當強大。本文系統整理 SQLite 的核心時間函數、支援的輸入格式、格式化符號,並附上經實測驗證的實戰範例,幫助開發者快速掌握時間運算與轉換技巧。

核心日期時間函數一覽

SQLite 提供四個主要函數處理日期時間:

  • datetime():回傳「日期+時間」(YYYY-MM-DD HH:MM:SS)
  • date():僅回傳日期(YYYY-MM-DD)
  • time():僅回傳時間(HH:MM:SS)
  • strftime():依指定格式字串輸出,彈性最高

函數語法與修正符

前三個函數語法一致:

datetime(時間字串, 修正符1, 修正符2, ...)
date(時間字串, 修正符1, ...)
time(時間字串, 修正符1, ...)

strftime() 則多一個格式參數:

strftime(格式字串, 時間字串, 修正符1, ...)

修正符可疊加,例如 '+3 hours'、'-12 minutes'、'start of month'、'localtime' 等,依序套用於基準時間。

支援的輸入時間字串格式

以下格式皆可直接作為第一個參數傳入:

格式範例
YYYY-MM-DD2024-01-15
YYYY-MM-DD HH:MM2024-01-15 14:30
YYYY-MM-DD HH:MM:SS2024-01-15 14:30:45
YYYY-MM-DD HH:MM:SS.SSS2024-01-15 14:30:45.123
HH:MM14:30
HH:MM:SS14:30:45
HH:MM:SS.SSS14:30:45.123
now當下時間(UTC)

strftime 格式化符號完整表

符號意義範圍/範例
%d月份中的第幾天01-31
%f秒的小數部分SS.SSS
%H24 小制小時00-23
%j年間第幾天001-366
%m月份01-12
%M分鐘00-59
%sUnix 時間戳(自 1970-01-01 秒數)1705327845
%S秒00-59
%w星期幾0-6 (0=週日)
%W年間第幾周01-53
%Y四位數年份2024
%%字面 % 符號%

實戰範例精選

1. 取得當前 UTC 時間

SELECT datetime('now');

結果:2024-01-15 14:30:45

2. 日期字串補齊時間為 00:00:00

SELECT datetime('2024-01-15');

結果:2024-01-15 00:00:00

3. 時間加減運算

SELECT datetime('2024-01-15 10:00:00', '+3 hours', '-12 minutes');

結果:2024-01-15 12:48:00

4. 日期運算:隔天、跨年

SELECT date('2024-01-15', '+1 day', '+1 year');

結果:2025-01-16

5. 取得本年/月/日初始時間

SELECT datetime('now', 'start of year');   -- 2024-01-01 00:00:00
SELECT datetime('now', 'start of month');  -- 2024-01-01 00:00:00
SELECT datetime('now', 'start of day');    -- 2024-01-15 00:00:00

6. 修正符執行順序影響結果

SELECT datetime('now', '+10 hours', 'start of day', '+10 hours');

說明:先加 10 小時 → 歸零到當天 00:00:00 → 再加 10 小時 → 最終為 10:00:00。

7. 時區轉換

-- UTC 轉本地時間
SELECT datetime('now', 'localtime');
-- UTC 手動轉東八區
SELECT datetime('now', '+8 hours');

8. 自訂格式輸出

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

結果:2024.01.15 22:30:45

小結

掌握 SQLite 時間函數的關鍵在於:理解「基準時間字串」與「修正符疊加順序」的關係,善用 strftime() 滿足各種輸出格式需求。實務上常見的「取本月第一天」、「計算 N 天前/後」、「時區轉換」皆能以單一 SQL 完成,無需應用層額外運算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved