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

如何用SQL查询返回每日唯一Unix时间以展示告警发生日期?

获取每日唯一告警日期对应的Unix时间

要实现按日期聚合,得到每个告警日期对应的唯一Unix时间戳,核心是先把Unix时间转换为日期格式,再按日期分组,取每组内任意一个时间戳即可(比如最小或最大的,不影响最终日期展示)。以下是主流数据库的实现方案:

MySQL

SELECT MIN(unixtime) AS daily_unixtime, 
       FROM_UNIXTIME(unixtime, '%Y/%m/%d') AS alert_date
FROM alerts_table
GROUP BY FROM_UNIXTIME(unixtime, '%Y/%m/%d');
  • FROM_UNIXTIME(unixtime, '%Y/%m/%d') 将Unix时间戳转换为YYYY/MM/DD格式的日期字符串
  • 按转换后的日期分组,用MIN(unixtime)提取该日期下最早的Unix时间戳作为唯一标识

PostgreSQL

SELECT MIN(unixtime) AS daily_unixtime,
       TO_CHAR(TO_TIMESTAMP(unixtime), 'YYYY/MM/DD') AS alert_date
FROM alerts_table
GROUP BY TO_CHAR(TO_TIMESTAMP(unixtime), 'YYYY/MM/DD');
  • TO_TIMESTAMP(unixtime) 把Unix时间戳转为PostgreSQL时间类型,再用TO_CHAR格式化指定日期格式
  • 分组后取该日期下的最小Unix时间戳,后续可直接用这个时间戳转换为日期展示给用户

SQL Server

SELECT MIN(unixtime) AS daily_unixtime,
       FORMAT(DATEADD(SECOND, unixtime, '1970-01-01'), 'yyyy/MM/dd') AS alert_date
FROM alerts_table
GROUP BY FORMAT(DATEADD(SECOND, unixtime, '1970-01-01'), 'yyyy/MM/dd');
  • DATEADD(SECOND, unixtime, '1970-01-01') 将Unix时间戳转为SQL Server的datetime类型,FORMAT负责格式化日期格式
  • 按日期分组后提取唯一时间戳,满足后续展示需求

如果只需要每个日期对应的唯一Unix时间戳,不需要提前生成日期字符串,也可以简化分组条件(比如直接按转换后的日期类型分组),最终得到的时间戳都能正确转换为对应的日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:35:00