跳到主要内容

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真题

交流微信二维码

你可能还想看