腾讯云数据仓库 TCHouse-X 日期与时间函数

这篇列出TCHouse-X 2.0.0及以上版本支持的日期时间函数,涵盖当前系统时间、日期构造、加减差值、属性提取、格式化与转换等操作,并附示例。 当前系统时间:提供current_date、current_timestamp等函数获取执行时刻时间。 日期加减与差值:包括add_months、date_add、datediff等函数用于日期运算。 格式化与转换:提供to_date、date_format、from_u。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:适用版本: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=Satweekday: 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 以来的秒/毫秒/微秒。 SET TIMEZONE = 'UTC'; — 为保证样例结果稳定,先设置时区为UTCselect unix_millis('1970-01-01 00:00:01'); — 1000select unix_seconds('1970-01-01 00:00:01'); — 1select unix_micros('1970-01-01 00:00:01'); — 1000000
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
赞 (0)
上一篇 4天前
下一篇 4天前