说明:
适用版本:TCHouse-X 内核版本 2.0.0及以上版本。
当前系统时间
这些函数用于获取查询执行时刻的系统时间。
函数 | 说明 | 示例 |
current_date() | 返回当前日期。 | select current_date(); -- 2026-01-01 |
current_timestamp() | 返回当前时间戳(含微秒)。 | select current_timestamp(); -- 2026-01-01 11:30:43.554431 |
current_timezone() | 返回当前会话的本地时区。 | select current_timezone(); -- Asia/Shanghai |
unix_timestamp() | 以秒为单位返回当前 UNIX 时间戳。 | select unix_timestamp(); -- 1767468503 |
日期与时间戳构造
函数 | 说明 | 示例 |
make_date(y, m, d) | 根据年、月、日整数创建日期。 | select make_date(2024, 12, 31); -- 2024-12-31 |
make_timestamp(y,m,d,h,mi,s[,tz]) | 创建带时区的时间戳。秒可含小数,tz 可选。 | select make_timestamp(2024, 12, 28, 6, 30, 45.8); -- 2024-12-28 06:30:45.8 |
make_timestamp_ntz(...) | 创建无时区时间戳(NTZ)。 | select make_timestamp_ntz(2024, 12, 31, 23, 59, 59); -- 2024-12-31 23:59:59 |
date_from_unix_date(n) | 返回 1970-01-01 之后第 n 天的日期。 | select date_from_unix_date(1); -- 1970-01-02 |
日期加减与差值
函数 | 说明 | 示例 |
add_months(d, n) | 加 n 月。自动处理月末(如 1-30 加一月为 2-28)。 | select add_months('2015-01-30', 1); -- 2015-02-28 |
date_add(d, n) | 在日期 d 上增加 n 天。 | select date_add('2024-12-31', 5); -- 2025-01-05 |
date_sub(d, n) | 在日期 d 上减去 n 天。 | select date_sub('2024-12-31', 5); -- 2024-12-26 |
datediff(end, start) | 计算两个日期之间的天数差。 | select datediff('2024-12-31', '2024-12-30'); -- 1 |
months_between(t1, t2) | 返回两个时间戳间的月数(返回 Double)。 | select months_between('2025-01-18', '2024-12-15'); -- 1.09677419 |
next_day(d, dayOfWeek) | 返回指定日期之后的第一个“星期几”。 | select next_day('2025-07-23', 'Mon'); -- 2025-07-28 |
属性提取与截断
类别 | 函数 | 说明 | 示例 |
字段提取 | year(), month(), quarter(), day(), hour(), minute(), second() | 提取对应的整数部分。 | select hour('2009-07-30 12:58:59'); -- 12 |
星期相关 | dayofweek() / weekday() | dayofweek: 1=Sun, 7=Sat weekday: 0=Mon, 6=Sun | select dayofweek('2023-08-22'); -- 3 |
年内统计 | dayofyear() / week_of_year() | 返回一年中的第几天/第几周。 | select dayofyear('2016-04-09'); -- 100 |
灵活提取 | extract(field FROM obj) | 从对象中提取 YEAR, DAY, SECOND 等字段。 | select extract(DAY FROM '2016-04-09'); -- 9 |
截断 | date_trunc(fmt, ts) | 将时间戳按单位截断(如截断至月份)。 | select date_trunc('MONTH', '2015-03-05'); -- 2015-03-01 00:00:00 |
月末 | last_day(d) | 返回该月最后一天的日期。 | select last_day(DATE '2024-02-15') -- 2024-02-29 |
格式化与转换
函数 | 说明 | 示例 |
to_date(s[, fmt]) | 将字符串转为日期。 | select to_date('2016-12-31', 'yyyy-MM-dd'); -- 2016-12-31 |
to_timestamp(s, fmt) | 将字符串转为带时区的时间戳。 | select to_timestamp('2024-12-31', 'yyyy-MM-dd'); -- 2024-12-31 00:00:00 |
date_format(ts, fmt) | 将时间戳按格式转为字符串。 | select date_format(now(), 'yyyy/MM/dd'); -- 2026/01/01 |
from_unixtime(sec, fmt) | 将 UNIX 秒数转为格式化字符串(受时区影响)。 | select from_unixtime(1767239624, 'yyyy-MM-dd'); -- 2026/01/01 |
unix_date(d) | 返回自 1970-01-01 以来的天数。 | select unix_date('1970-01-02'); -- 1 |
unix_seconds/unix_millis/unix_micros | 返回自 Epoch 以来的秒/毫秒/微秒。 |
|
from_utc_timestamp/to_utc_timestamp | 在指定时区与 UTC 之间转换时间戳。 | SELECT from_utc_timestamp('2015-07-24 07:00:00', 'America/Los_Angeles'); --2015-07-24 00:00:00 |