StarRocks时间转换函数详解

StarRocks 提供了丰富的时间转换函数来处理日期和时间数据。以下是常用的时间转换函数分类说明:

1. 基础时间转换函数

函数描述示例
FROM_UNIXTIME(unix_timestamp) 将UNIX时间戳转为DATETIME FROM_UNIXTIME(1617184800) → "2021-03-31 12:00:00"
UNIX_TIMESTAMP(datetime_str) 将日期时间字符串转为UNIX时间戳 UNIX_TIMESTAMP("2021-03-31 12:00:00") → 1617184800
TO_DATE(datetime) 提取日期部分 TO_DATE("2021-03-31 12:00:00") → "2021-03-31"
DATE_FORMAT(datetime, format) 格式化日期时间 DATE_FORMAT(NOW(), '%Y-%m-%d') → "2023-07-20"

2. 时区转换函数

函数描述
CONVERT_TZ(dt, from_tz, to_tz) 转换时区
FROM_UTC_TIMESTAMP(timestamp, timezone) 从UTC转为指定时区
TO_UTC_TIMESTAMP(timestamp, timezone) 转为UTC时间

3. 时间提取函数

函数描述示例
YEAR(datetime) 提取年份 YEAR("2021-03-31") → 2021
QUARTER(datetime) 提取季度 QUARTER("2021-03-31") → 1
MONTH(datetime) 提取月份 MONTH("2021-03-31") → 3
DAY(datetime) 提取日 DAY("2021-03-31") → 31
HOUR(datetime) 提取小时 HOUR("12:34:56") → 12
MINUTE(datetime) 提取分钟 MINUTE("12:34:56") → 34
SECOND(datetime) 提取秒 SECOND("12:34:56") → 56

4. 时间计算函数

函数描述示例
DATE_ADD(datetime, INTERVAL expr unit) 时间加法 DATE_ADD("2021-03-31", INTERVAL 1 DAY) → "2021-04-01"
DATE_SUB(datetime, INTERVAL expr unit) 时间减法 DATE_SUB("2021-03-31", INTERVAL 1 MONTH) → "2021-02-28"
DATEDIFF(enddate, startdate) 计算日期差(天数) DATEDIFF("2021-04-01", "2021-03-31") → 1
TIMESTAMPDIFF(unit, start, end) 计算时间差(指定单位) TIMESTAMPDIFF(HOUR, "2021-03-31 12:00:00", "2021-03-31 14:30:00") → 2

5. 格式化字符串说明

常用格式符号:

符号描述
%Y 四位年份
%y 两位年份
%m 月份(01-12)
%d 日(01-31)
%H 小时(00-23)
%i 分钟(00-59)
%s 秒(00-59)
%T 时间(HH:MM:SS)

实际应用示例

-- 计算7天前的日期
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY);

-- 将时间戳转为指定格式
SELECT DATE_FORMAT(FROM_UNIXTIME(1617184800), '%Y-%m-%d %H:%i:%s');

-- 计算两个日期之间的小时差
SELECT TIMESTAMPDIFF(HOUR, '2023-01-01 08:00:00', '2023-01-02 10:30:00');

-- 时区转换
SELECT CONVERT_TZ('2023-07-20 12:00:00', 'UTC', 'Asia/Shanghai');

StarRocks的时间函数与MySQL兼容,但性能更高,特别适合大规模时间数据的分析处理。

posted @ 2025-06-23 22:30  业余砖家  阅读(519)  评论(0)    收藏  举报