云日志服务提供时间函数、日期函数、日期和时间提取函数、日期和时间格式转换函数等,支持对日志中的日期和时间进行格式转换等处理。本文介绍日期和时间函数的语法及示例。
函数列表
函数名称 | 语法 | 说明 |
---|---|---|
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 |
微秒 |