You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中如何基于Unix时间戳查询近1个月及1周的数据?

正确的ClickHouse查询语句及错误修复

为什么原语句报错?

你之前的写法不符合ClickHouse的日期运算规则:直接对from_unixtime()返回的DateTime值执行- interval操作会触发函数参数不匹配错误,ClickHouse要求使用专门的时间偏移函数来处理日期时间的增减。

1. 查询指定时间(1689219182)往前推1个月的数据

用addMonths()函数实现精准的月份偏移(自动处理不同月份的天数差异),再转回Unix时间戳:

SELECT * FROM table 
WHERE time < unixTimestamp(addMonths(fromUnixTimestamp(1689219182), -1));

如果可以接受按30天近似计算(不推荐,存在月份天数误差),也可以直接对时间戳做减法:

SELECT * FROM table 
WHERE time < 1689219182 - 30*24*3600;

2. 查询近1周的数据

基于当前时间往前推1周(获取最近7天的数据)

-- 推荐写法:用addWeeks实现精准周偏移
SELECT * FROM table 
WHERE time > unixTimestamp(addWeeks(now(), -1));

-- 简化写法(新版本ClickHouse支持直接对now()做interval运算)
SELECT * FROM table 
WHERE time >= unixTimestamp(now() - INTERVAL 1 WEEK);

基于指定时间1689219182往前推1周

SELECT * FROM table 
WHERE time < unixTimestamp(addWeeks(fromUnixTimestamp(1689219182), -1));

额外提示

  • ClickHouse中fromUnixTimestamp()和from_unixtime()、unixTimestamp()和unix_timestamp()功能完全一致,前者是更符合ClickHouse风格的命名。
  • 涉及月份偏移时,务必用addMonths(),避免固定天数计算带来的误差(比如2月只有28/29天,大月有31天)。

内容的提问来源于stack exchange,提问作者Byte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:05:00