current_date:获取当前日期
速查结论
current_date() 返回查询评估开始时的当前日期。同一查询内所有 current_date 调用返回相同的值,确保事务一致性。不带括号的 current_date 语法自 2.0.1 起支持。
语法
-- 带括号(推荐)
current_date()
-- 不带括号(自 2.0.1 起支持)
current_date
参数说明
无参数。
返回值:当前日期(DATE 类型)。同一查询内所有调用返回相同值。
Since: 1.5.0
示例
基础用法
-- 带括号
SELECT current_date();
-- 结果: 2020-04-25
-- 不带括号
SELECT current_date;
-- 结果: 2020-04-25
日期计算
-- 计算7天前的日期
SELECT current_date() - INTERVAL 7 DAY AS last_week;
-- 计算本月第一天
SELECT date_trunc('MONTH', current_date()) AS month_start;
与表查询结合
-- 筛选最近30天的订单
SELECT *
FROM orders
WHERE order_date >= current_date() - INTERVAL 30 DAY;
current_date vs current_timestamp vs now 对比
| 函数 | 返回类型 | 返回内容 | 适用场景 |
|---|---|---|---|
current_date() | DATE | 当前日期(不含时间) | 按天分区、日期筛选 |
current_timestamp() | TIMESTAMP | 当前日期时间 | 需要精确时间 |
now() | TIMESTAMP | 与 current_timestamp 相同 | 语义别名 |
SELECT
current_date() AS today,
current_timestamp() AS now_ts,
now() AS now_alias;
-- today: 2020-04-25
-- now_ts: 2020-04-25 10:30:00.123
-- now_alias: 2020-04-25 10:30:00.123
常见报错与避坑指南
查询内一致性
current_date 在同一查询内始终返回相同值,即使查询执行时间跨天。这是预期行为,确保结果可重复。
-- 同一查询内多次调用返回相同值
SELECT current_date() AS a, current_date() AS b;
-- a 和 b 始终相同
不带括号的写法已废弃警告
某些 Spark 版本中不带括号的 current_date 可能产生弃用警告,建议统一使用 current_date()。
-- 推荐写法
SELECT current_date();
-- 可能产生弃用警告
SELECT current_date;
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
