SQL 查询返回一个 UNIX 时间来表示一天

问题描述 投票:0回答:1

我需要通知用户发生警报的日期。

我的数据库中有一个alerts_table,它存储unix时间和在那段时间发生的警报。

select DISTINCT unixtime from alerttable; // returns all alerts 

问题是我每天都会发生数千个警报,我只希望我的查询返回一个代表每一天的 UNIX 时间 ,这样我就可以告诉用户他在特定日期是否有警报。

然后我可以将unix时间转换为天并向用户显示 (例如:您在 2023 年 11 月 11 日、2023 年 12 月 11 日等收到了警报)

谢谢!!

sql oracle11g
1个回答
0
投票

我不确定这是否是最好的方法,但它有效:

SELECT 
  MIN(unixTime), 
  TRUNC(TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL(unixTime, 'SECOND' ))
FROM yourtable
GROUP BY 
  TRUNC(TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL(unixTime, 'SECOND' ))
ORDER BY 1;

因此我们使用函数

NUMTODSINTERVAL
(请参阅文档)来从unixtime获取秒数。

由于 Unix 时间的定义是从

1970-01-01
“开始”的,我们可以将秒添加到该日期,并从 unixtime 值中获取日期。

现在我们使用

TRUNC
去掉确切的时间,只关注日期。因此,您可以
GROUP BY
仅选择日期,并每天选择一个 unix 时间(如果您愿意,也可以选择当天本身)。

我们必须决定选择哪个 Unix 时间。我使用

MIN
选择了每天的第一个。

我们可以在这个样本小提琴

上尝试这个解决方案
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.