- SQLite 教程
- SQLite - 首頁
- SQLite - 概述
- SQLite - 安裝
- SQLite - 命令
- SQLite - 語法
- SQLite - 資料型別
- SQLite - 建立資料庫
- SQLite - 附加資料庫
- SQLite - 分離資料庫
- SQLite - 建立表
- SQLite - 刪除表
- SQLite - INSERT 查詢
- SQLite - SELECT 查詢
- SQLite - 運算子
- SQLite - 表示式
- SQLite - WHERE 子句
- SQLite - AND & OR 子句
- SQLite - UPDATE 查詢
- SQLite - DELETE 查詢
- SQLite - LIKE 子句
- SQLite - GLOB 子句
- SQLite - LIMIT 子句
- SQLite - ORDER BY 子句
- SQLite - GROUP BY 子句
- SQLite - HAVING 子句
- SQLite - DISTINCT 關鍵字
- 高階 SQLite
- SQLite - PRAGMA
- SQLite - 約束
- SQLite - 連線
- SQLite - UNION 子句
- SQLite - NULL 值
- SQLite - 別名語法
- SQLite - 觸發器
- SQLite - 索引
- SQLite - INDEXED BY 子句
- SQLite - ALTER 命令
- SQLite - TRUNCATE 命令
- SQLite - 檢視
- SQLite - 事務
- SQLite - 子查詢
- SQLite - AUTOINCREMENT
- SQLite - 注入
- SQLite - EXPLAIN
- SQLite - VACUUM
- SQLite - 日期與時間
- SQLite - 有用函式
- SQLite 有用資源
- SQLite - 快速指南
- SQLite - 有用資源
- SQLite - 討論
SQLite - 日期與時間
SQLite 支援以下五種日期和時間函式:
| 序號 | 函式 | 示例 |
|---|---|---|
| 1 | date(timestring, modifiers...) | 返回此格式的日期:YYYY-MM-DD |
| 2 | time(timestring, modifiers...) | 返回 HH:MM:SS 格式的時間 |
| 3 | datetime(timestring, modifiers...) | 返回 YYYY-MM-DD HH:MM:SS 格式的日期和時間 |
| 4 | julianday(timestring, modifiers...) | 返回自公元前 4714 年 11 月 24 日格林尼治中午以來的天數。 |
| 5 | strftime(timestring, modifiers...) | 根據作為第一個引數指定的格式字串返回格式化的日期,格式如下所示。 |
以上五個日期和時間函式都接受時間字串作為引數。時間字串後面可以跟零個或多個修飾符。strftime() 函式也將其第一個引數作為格式字串。下一節將詳細介紹不同型別的時間字串和修飾符。
時間字串
時間字串可以採用以下任何格式:
| 序號 | 時間字串 | 示例 |
|---|---|---|
| 1 | YYYY-MM-DD | 2010-12-30 |
| 2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
| 3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
| 4 | MM-DD-YYYY HH:MM | 30-12-2010 12:10 |
| 5 | HH:MM | 12:10 |
| 6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
| 7 | HH:MM:SS | 12:10:01 |
| 8 | YYYYMMDD HHMMSS | 20101230 121001 |
| 9 | now | 2013-05-07 |
您可以使用“T”作為分隔日期和時間的文字字元。
修飾符
時間字串後面可以跟零個或多個修飾符,這些修飾符將更改上述五個函式中的任何一個返回的日期和/或時間。修飾符從左到右應用。
SQLite 中提供以下修飾符:
- NNN 天
- NNN 小時
- NNN 分鐘
- NNN.NNNN 秒
- NNN 個月
- NNN 年
- 月初
- 年初
- 當日開始
- 星期 N
- unixepoch
- localtime
- utc
格式化程式
SQLite 提供了一個非常方便的函式strftime() 來格式化任何日期和時間。您可以使用以下替換來格式化日期和時間。
| 替換 | 描述 |
|---|---|
| %d | 月份中的日期,01-31 |
| %f | 小數秒,SS.SSS |
| %H | 小時,00-23 |
| %j | 一年中的日期,001-366 |
| %J | 儒略日數,DDDD.DDDD |
| %m | 月份,00-12 |
| %M | 分鐘,00-59 |
| %s | 自 1970-01-01 以來的秒數 |
| %S | 秒,00-59 |
| %w | 星期幾,0-6(0 為星期日) |
| %W | 一年中的星期,01-53 |
| %Y | 年份,YYYY |
| %% | % 符號 |
示例
現在讓我們使用 SQLite 提示符嘗試各種示例。以下命令計算當前日期。
sqlite> SELECT date('now');
2013-05-07
以下命令計算當前月份的最後一天。
sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31
以下命令計算給定 UNIX 時間戳 1092941466 的日期和時間。
sqlite> SELECT datetime(1092941466, 'unixepoch'); 2004-08-19 18:51:06
以下命令計算給定 UNIX 時間戳 1092941466 的日期和時間,並補償您的本地時區。
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime'); 2004-08-19 13:51:06
以下命令計算當前 UNIX 時間戳。
sqlite> SELECT strftime('%s','now');
1393348134
以下命令計算自美國獨立宣言簽署以來的天數。
sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023
以下命令計算自 2004 年特定時刻以來的秒數。
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572
以下命令計算當年 10 月份第一個星期二的日期。
sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01
以下命令計算自 UNIX 紀元以來的秒數(類似於 strftime('%s','now'),但包括小數部分)。
sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598
在格式化日期時在 UTC 和本地時間值之間進行轉換,請使用 utc 或 localtime 修飾符,如下所示:
sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00
廣告