
云日志服務提供時間函數、日期函數、日期和時間提取函數、日期和時間格式轉換函數等,支持對日志中的日期和時間進行格式轉換等處理。本文介紹日期和時間函數的語法及示例。
函數列表
| 函數名稱 | 語法 | 說明 |
|---|---|---|
| current_date函數 | current_date() | 返回當前日期。同curdate函數。 |
| curdate函數 | curdate() | 返回當前日期。同current_date函數。 |
| current_timestamp函數 | current_timestamp() | 返回當前時間。同now函數 |
| toDateTime函數 | toDateTime(expr, tz) | 將日期和時間表達式轉換為datetime類型。 |
| now函數 | now() | 返回當前時間。同current_timestamp |
| current_timezone函數 | current_timezone() | 返回當前時區。 |
| date函數 | date(expr) | 返回日期和時間表達式中的日期部分。 |
| date_format函數 | date_format(x, format) | 將datetime類型的日期和時間表達式轉化為指定格式的日期和時間表達式。 |
| tostartofinterval函數 | tostartofinterval(x, INTERVAL n interval) | 返回指定時間間隔的開始時間 |
| from_unixtime函數 | from_unixtime(x) | 將UNIX時間戳轉化為datetime類型的日期和時間表達式。 |
| unix_timestamp函數 | unix_timestamp(x) | 將日期和時間表達式轉化成UNIX時間戳。 |
| day函數 | day(x) | 提取日期和時間表達式中的天數,按月計算。同dayofmonth函數。 |
| dayofmonth函數 | dayofmonth(x) | 提取日期和時間表達式中的天數,按月計算。同day函數。 |
| dayofweek函數 | dayofweek(x) | 返回日期和時間表達式的周索引。同weekday函數。 |
| weekday函數 | weekday(x) | 返回日期和時間表達式的周索引。同dayofweek函數。 |
| dayofyear函數 | dayofyear(x) | 提取日期和時間表達式中的天數,按年計算。 |
| tohour函數 | tohour(x) | 提取時間表達式的24小時制(0-23)小時數。同hour函數。 |
| minute函數 | minute(x) | 提取日期和時間表達式中的分鐘數。 |
| month函數 | month(x) | 提取日期和時間表達式中的月份。 |
| quarter函數 | quarter(x) | 計算目標日期所屬的季度。 |
| hour函數 | hour(x) | 提取日期和時間表達式中的小時數,按24小時制計算。同tohour函數。 |
| second函數 | second(x) | 提取日期和時間表達式中的秒數。 |
| week函數 | week(x) | 計算目標日期是在一年中的第幾周。同weekofyear函數。 |
| weekofyear函數 | weekofyear(x) | 計算目標日期是在一年中的第幾周。同week函數。 |
| year函數 | year(x) | 提取目標日期中的年份。 |
| date_trunc函數 | date_trunc(unit, x) | 根據指定的時間單位截斷日期和時間表達式,并按照毫秒、秒、分鐘,小時、日、月或年對齊。 |
| date_add函數 | date_add(x, INTERVAL n interval) | 在x上加上N個時間單位(interval)。同adddate函數。 |
| adddate函數 | adddate(x, INTERVAL n interval) | 在x上加上N天。同date_add函數。 |
| convert_tz函數 | convert_tz(x, tz) | 將指定日期時間表達式從一個時區轉換為另一個時區,并返回新的日期時間表達式 |
| date_sub函數 | date_sub(date, INTERVAL n interval) | 在x上減去N個時間單位(interval)。同subdate函數。 |
| subdate函數 | subdate(date, INTERVAL n interval) | 在x上減去N個時間單位(interval)。同date_sub函數。 |
| localtime函數 | localtime() | 返回本地時間。同localtimestamp函數。 |
| localtimestamp函數 | localtimestamp() | 返回本地日期和時間。同localtime函數。 |
| makedate函數 | makedate(year, month, day)makedate(x, day_of_year) | 根據參數生成日期。 |
| monthname函數 | monthname(x) | 將日期時間表達式轉換為月份名稱。 |
current_date函數
返回當前日期。同curdate函數。
語法
current_date()
參數說明
無
返回值類型
日期類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT current_date() |
| 返回結果 |
2024-03-01 |
current_timestamp函數
返回當前時間。同now函數。
語法
current_date()
參數說明
無
返回值類型
datetime類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT current_timestamp() |
| 返回結果 |
2024-03-01 15:32:36 |
toDateTime函數
將日期和時間表達式轉換為datetime類型。
語法
toDateTime(expr,?tz)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| expr | 如果參數為string類型,則當做日期和時間表達式來解析;如果參數為integer類型,則當做單位為秒的Unix時間戳。 | string類型或integer類型 | 是 |
| tz | 時區表達式 | string類型 | 否 |
返回值類型
datetime類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT toDateTime(1709253000, 'Asia/Shanghai') |
| 返回結果 |
2024-03-01 08:30:00 |
current_timezone函數
返回當前時區。
語法
current_timezone()
參數說明
無
返回值類型
string類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT current_timezone() |
| 返回結果 |
Asia/Shanghai |
date函數
返回日期和時間表達式中的日期部分。
語法
date(expr)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| expr | 如果參數為string類型,則當做日期和時間表達式來解析;如果參數為integer類型,則表示從1970-01-01開始的日期偏移量。 | string類型或integer類型 | 是 |
返回值類型
日期類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT date(now()) |
| 返回結果 |
2024-03-01 |
date_format函數
將datetime類型的日期和時間表達式轉化為指定格式的日期和時間表達式。
語法
date_format(x,?format)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
| format |
日期和時間表達式的轉換格式(見format說明) |
string類型 | 是 |
返回值類型
datetime類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT date_format(now(), '%H:%i:%S') |
| 返回結果 |
21:06:55 |
tostartofinterval函數
返回指定時間間隔的開始時間。
語法
tostartofinterval(x,?INTERVAL?n?interval)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
| n | 時間間隔數量 |
integer類型 | 是 |
| interval |
時間間隔單位 |
見interval說明 | 是 |
返回值類型
日期和時間表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT tostartofinterval(toDateTime('2023-09-01 21:06:33'), INTERVAL 1 hour) |
| 返回結果 |
2023-09-01 21:00:00 |
from_unixtime函數
將UNIX時間戳轉化為datetime類型的日期和時間表達式。
語法
from_unixtime(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | UNIX時間戳 | integer類型 | 是 |
返回值類型
datetime類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT from_unixtime(1709253000) |
| 返回結果 |
2024-03-01 08:30:00 |
unix_timestamp函數
將日期和時間表達式轉化成UNIX時間戳。
語法
unix_timestamp(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | 字符串或datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT unix_timestamp('2024-03-01 08:30:00') |
| 返回結果 |
1709253000 |
day函數
提取日期和時間表達式中的天數,按月計算。同dayofmonth函數。
語法
day(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT day('2024-02-28 08:30:00') |
| 返回結果 |
28 |
dayofweek函數
返回日期和時間表達式的周幾。同weekday函數。
語法
dayofweek(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT dayofweek('2024-02-28 08:30:00') |
| 返回結果 |
3 |
dayofyear函數
提取日期和時間表達式中的天數,按年計算。
語法
dayofyear(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT dayofyear('2024-02-28 08:30:00') |
| 返回結果 |
59 |
tohour函數
提取時間表達式的24小時制(0-23)小時數。同hour函數。
語法
tohour(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECTtohour('2024-02-28 08:30:00') |
| 返回結果 |
8 |
minute函數
提取日期和時間表達式中的分鐘數。
語法
minute(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT minute('2024-02-28 08:30:00') |
| 返回結果 |
30 |
month函數
提取日期和時間表達式中的月份。
語法
month(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT month('2024-02-28 08:30:00') |
| 返回結果 |
2 |
quarter函數
計算目標日期所屬的季度。
語法
quarter(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT quarter('2024-02-28 08:30:00') |
| 返回結果 |
1 |
second函數
提取日期和時間表達式中的秒數。
語法
second(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT second('2024-02-28 08:30:52') |
| 返回結果 |
52 |
week函數
計算目標日期是在一年中的第幾周。同weekofyear函數。
語法
week(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT week('2024-02-28 08:30:52') |
| 返回結果 |
9 |
year函數
提取目標日期中的年份。
語法
year(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
integer類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT year('2024-02-28 08:30:52') |
| 返回結果 |
2024 |
date_trunc函數
根據指定的時間單位截斷日期和時間表達式,并按照毫秒、秒、分鐘,小時、日、月或年對齊。
語法
date_trunc(unit,?x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| unit | 時間單位(見unit說明) | string類型 | 是 |
| x | 日期和時間表達式 | datetime類型 | 是 |
返回值類型
日期和時間表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT date_trunc('quarter', toDateTime('2023-09-01 21:06:33')) |
| 返回結果 |
2023-07-01 00:00:00 |
date_add函數
在x上加上N個時間單位(interval)。同adddate函數。
語法
date_add(x,?INTERVAL?n?interval)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
| n | 時間間隔數量 | integer | 是 |
| interval | 時間間隔單位 | 見Interval說明 | 是 |
返回值類型
日期和時間表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT date_add(toDateTime('2023-09-01 21:06:33'), INTERVAL 1 month) |
| 返回結果 |
2023-10-01 21:06:33 |
convert_tz函數
將指定日期時間表達式從一個時區轉換為另一個時區,并返回新的日期時間表達式。
語法
convert_tz(x,?tz)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
| tz | 時區 | string類型 | 是 |
返回值類型
日期和時間表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT convert_tz(toDateTime('2023-09-01 21:06:33'), 'UTC') |
| 返回結果 |
2023-09-01 13:06:33 |
date_sub函數
在x上減去N個時間單位(interval)。同subdate函數。
語法
date_sub(x,?INTERVAL?n?interval)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | datetime類型 | 是 |
| n | 時間間隔數量 | integer | 是 |
| interval | 時間間隔單位 | 見Interval說明 | 是 |
返回值類型
日期和時間表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT date_sub(toDateTime('2023-09-01 21:06:33'), INTERVAL 1 month) |
| 返回結果 |
2023-08-01 21:06:33 |
localtime函數
返回本地時間。同localtimestamp函數。
語法
localtime()
參數說明
無
返回值類型
日期類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT localtime() |
| 返回結果 |
2023-09-01 19:16:25 |
makedate函數
根據參數生成日期。
語法
makedate(year,?month,?day)
makedate(x,?day_of_year)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| year | 年份 | string或integer類型 | 是 |
| month | 月份(1-12) | string或integer類型 | 是 |
| day | 天(1-31) | string或integer類型 | 是 |
| day_of_year | 每年的第幾天 | string或integer類型 | 是 |
返回值類型
日期表達式
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT makedate(2024, 60) |
| 返回結果 |
2024-02-29 |
monthname函數
將日期時間表達式轉換為月份名稱。
語法
monthname(x)
參數說明
| 參數名稱 | 說明 | 類型 | 是否必選 |
|---|---|---|---|
| x | 日期和時間表達式 | string類型 | 是 |
返回值類型
string類型
示例
| 類型 |
示例 |
|---|---|
| 統計分析語句 |
SELECT monthname('2023-09-01 21:06:33') |
| 返回結果 |
September |
format說明
| 占位符 |
說明 | 樣例 |
|---|---|---|
| %a | 星期的英文縮寫 (Mon-Sun) | Fri |
| %b | 月份的英文縮寫 (Jan-Dec) | Sep |
| %c | 月份 (01-12) | 09 |
| %C | 年份后兩位 (00-99) | 23 |
| %d | 每月的第幾天。1位數的前面補0 (01-31) | 01 |
| %e | 每月的第幾天。前面不補0 (1-31) | 1 |
| %h | 小時,12小時制 (01-12) | 10 |
| %H | 小時,24小時制 (00-23) | 22 |
| %i | 分鐘 (00-59) | 30 |
| %j | 每年的第幾天 (001-366) | 003 |
| %k | 小時,24小時制 (00-23) | 22 |
| %l | 小時,12小時制 (01-12) | 10 |
| %m | 月份 (01-12) | 09 |
| %M | 月份的英文全稱 (January-December) | September |
| %p | AM/PM | PM |
| %Q | 每年的第幾季度 (1-4) | 3 |
| %r | 時間。12小時制,格式為hh:mm AM/PM。相當于%h:%i %p | 10:30 PM |
| %R | 時間。24小時制,格式為HH:MM。相當于%H:%i | 22:30 |
| %s | 秒 (00-59) | 32 |
| %S | 秒 (00-59) | 32 |
| %T | 時間。ISO 8601格式(HH:MM:SS),相當于%H:%i:%S | 22:30:32 |
| %u | 每周的第幾天,從周一開始 (1-7) | 2 |
| %V | 每年的第幾周 (01-53) | 01 |
| %w | 每周的第幾天,從周日開始 (0-6) | 2 |
| %W | 星期的英文全稱 (Monday-Sunday) | Monday |
| %y | 年份后兩位 (00-99) | 23 |
| %Y | 年份,4位數 | 2023 |
| %z | 相較UTC的時鐘偏移 +HHMM 或 -HHMM | +0800 |
| %% | %的轉義字符 | % |
unit說明
| unit | 說明 |
|---|---|
| year | 年 |
| quarter | 季度 |
| month | 月 |
| week | 周 |
| day | 天 |
| hour | 小時 |
| minute | 分鐘 |
| second | 秒 |
interval說明
| interval | 說明 |
|---|---|
| year | 年 |
| quarter | 季度 |
| month | 月 |
| week | 周 |
| day | 天 |
| hour | 小時 |
| minute | 分鐘 |
| second | 秒 |
| millisecond | 毫秒 |
| microsecond |
微秒 |