日期和時間函數與運算子¶
日期和時間運算子¶
運算子 |
範例 |
結果 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
時區轉換¶
AT TIME ZONE
運算子設定時間戳記的時區
SELECT timestamp '2012-10-31 01:00 UTC';
2012-10-31 01:00:00.000 UTC
SELECT timestamp '2012-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles';
2012-10-30 18:00:00.000 America/Los_Angeles
日期和時間函數¶
- current_date -> date()¶
傳回查詢開始時的目前日期。
- current_time -> time with time zone()¶
傳回查詢開始時的目前時間。
- current_timestamp -> timestamp with time zone()¶
傳回查詢開始時的目前時間戳記。
- current_timezone() -> varchar()¶
傳回 IANA 定義格式 (例如
America/Los_Angeles
) 或與 UTC 的固定偏移量 (例如+08:35
) 的目前時區
- date(x) -> date()¶
這是
CAST(x AS date)
的別名。
- last_day_of_month(x) -> date()¶
傳回當月的最後一天。
- from_iso8601_timestamp(string) -> timestamp with time zone()¶
將 ISO 8601 格式化的
string
剖析為timestamp with time zone
。
- from_iso8601_date(string) -> date()¶
將 ISO 8601 格式化的
string
剖析為date
。
- from_unixtime(unixtime) -> timestamp()¶
將 UNIX 時間戳記
unixtime
作為時間戳記回傳。
- from_unixtime(unixtime, string) -> timestamp with time zone()¶
將 UNIX 時間戳記
unixtime
作為帶時區的時間戳記回傳,並使用string
作為時區。
- from_unixtime(unixtime, hours, minutes) -> timestamp with time zone()¶
將 UNIX 時間戳記
unixtime
作為帶時區的時間戳記回傳,並使用hours
和minutes
作為時區偏移量。
- localtime -> time()¶
傳回查詢開始時的目前時間。
- localtimestamp -> timestamp()¶
傳回查詢開始時的目前時間戳記。
- now() -> timestamp with time zone()¶
這是
current_timestamp
的別名。
- to_iso8601(x) -> varchar()¶
將
x
格式化為 ISO 8601 字串。x
可以是日期、時間戳記或帶時區的時間戳記。
- to_milliseconds(interval) -> bigint()¶
將日到秒的
interval
作為毫秒回傳。
- to_unixtime(timestamp) -> double()¶
將
timestamp
作為 UNIX 時間戳記回傳。
注意
以下 SQL 標準函式不使用括號
current_date
current_time
current_timestamp
localtime
localtimestamp
截斷函式¶
date_trunc
函式支援以下單位
單位 |
截斷值範例 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以上範例使用時間戳記 2001-08-22 03:04:05.321
作為輸入。
- date_trunc(unit, x) -> [same as input]()¶
回傳截斷為
unit
的x
。
間隔函式¶
此區段中的函式支援以下間隔單位
單位 |
描述 |
---|---|
|
毫秒 |
|
秒 |
|
分鐘 |
|
小時 |
|
天 |
|
週 |
|
月 |
|
一年中的季度 |
|
年 |
- date_add(unit, value, timestamp) -> [same as input]()¶
將
unit
類型的間隔value
加到timestamp
。可以使用負值執行減法。
- date_diff(unit, timestamp1, timestamp2) -> bigint()¶
以
unit
表示,回傳timestamp2 - timestamp1
的差值。
持續時間函式¶
parse_duration
函式支援以下單位
單位 |
描述 |
---|---|
|
奈秒 |
|
微秒 |
|
毫秒 |
|
秒 |
|
分鐘 |
|
小時 |
|
天 |
- parse_duration(string) -> interval()¶
將格式為
value unit
的string
解析為間隔,其中value
是unit
值的非整數數值。SELECT parse_duration('42.8ms'); -- 0 00:00:00.043 SELECT parse_duration('3.81 d'); -- 3 19:26:24.000 SELECT parse_duration('5m'); -- 0 00:05:00.000
MySQL 日期函式¶
此區段中的函式使用與 MySQL date_parse
和 str_to_date
函式相容的格式字串。下表根據 MySQL 手冊,描述了格式指定符
指定符 |
描述 |
---|---|
|
縮寫的星期幾名稱 ( |
|
縮寫的月份名稱 ( |
|
月份,數值 ( |
|
帶有英文後綴的月份日期 ( |
|
月份日期,數值 ( |
|
月份日期,數值 ( |
|
秒的小數部分 (列印時為 6 位數: |
|
小時 ( |
|
小時 ( |
|
小時 ( |
|
分鐘,數值 ( |
|
一年中的第幾天 ( |
|
小時 ( |
|
小時 ( |
|
月份名稱 ( |
|
月份,數值 ( |
|
|
|
時間,12 小時制 ( |
|
秒 ( |
|
秒 ( |
|
時間,24 小時制 ( |
|
週 ( |
|
週 ( |
|
週 ( |
|
週 ( |
|
星期幾名稱 ( |
|
星期幾 ( |
|
星期日為一週第一天的年份,數字格式,四位數;與 |
|
星期一為一週第一天的年份,數字格式,四位數;與 |
|
年份,數字格式,四位數 |
|
年份,數字格式 (兩位數) [2] |
|
一個字面上的 |
|
|
警告
目前不支援以下指定符:%D %U %u %V %w %X
- date_format(timestamp, format) -> varchar()¶
使用
format
將timestamp
格式化為字串。
- date_parse(string, format) -> timestamp()¶
使用
format
將string
解析為時間戳記。
Java 日期函數¶
本節中的函數使用與 JodaTime 的 DateTimeFormat 模式格式相容的格式字串。
- format_datetime(timestamp, format) -> varchar()¶
使用
format
將timestamp
格式化為字串。
- parse_datetime(string, format) -> timestamp with time zone()¶
使用
format
將string
解析為帶時區的時間戳記。
提取函數¶
extract
函數支援以下欄位
欄位 |
描述 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extract
函數支援的類型會根據要提取的欄位而有所不同。大多數欄位都支援所有日期和時間類型。
- extract(field FROM x) -> bigint()¶
從
x
傳回field
。注意
此 SQL 標準函數使用特殊語法來指定引數。
便利提取函數¶
- day(x) -> bigint()¶
從
x
傳回月份中的日期。
- day_of_month(x) -> bigint()¶
這是
day()
的別名。
- day_of_week(x) -> bigint()¶
從
x
傳回 ISO 週中的日期。值範圍從1
(星期一) 到7
(星期日)。
- day_of_year(x) -> bigint()¶
從
x
傳回一年中的日期。值範圍從1
到366
。
- dow(x) -> bigint()¶
這是
day_of_week()
的別名。
- doy(x) -> bigint()¶
這是
day_of_year()
的別名。
- hour(x) -> bigint()¶
從
x
傳回一天中的小時。值範圍從0
到23
。
- millisecond(x) -> bigint()¶
從
x
傳回秒的毫秒數。
- minute(x) -> bigint()¶
從
x
傳回小時中的分鐘數。
- month(x) -> bigint()¶
從
x
傳回一年中的月份。
- quarter(x) -> bigint()¶
從
x
傳回一年中的季度。值範圍從1
到4
。
- second(x) -> bigint()¶
從
x
傳回分鐘中的秒數。
- timezone_hour(timestamp) -> bigint()¶
從
timestamp
傳回時區偏移的小時數。
- timezone_minute(timestamp) -> bigint()¶
從
timestamp
傳回時區偏移的分鐘數。
- week_of_year(x) -> bigint()¶
這是
week()
的別名。
- year(x) -> bigint()¶
從
x
傳回年份。
- yow(x) -> bigint()¶
這是
year_of_week()
的別名。