【问题标题】:How to calculate gap between 2 timestamps (edited for AWS Athena )如何计算 2 个时间戳之间的差距(针对 AWS Athena 编辑)
【发布时间】:2019-07-22 14:35:10
【问题描述】:

我有许多 IOT 设备将数据发送到我的 Amazon Athena 服务器,我创建了一个表来存储数据,该表包含 2 列:LocalTime 表示 IOT 设备捕获其状态的时间,ServerTime 表示数据的时间到达服务器(有时物联网设备没有网络连接)

我想以小时为单位(比如说 1 小时)计算“差距”,以便了解到达的数据的偏差,例如:

我想要得到的结果是:

为了计算结果,我想计算 serverTime 和 LocalTime 之间经过了多少小时。 所以第一个条目(1.1.2019 12:15 - 1.1.2019 10:25)= 1-2 小时。

谢谢

【问题讨论】:

  • 请标记您的数据库名称。
  • 您使用的是哪个数据库系统(MySQL、SSMS 等)?
  • 是的,日期/时间/时间戳功能在不同的数据库引擎之间存在很大差异。请告诉我们您使用的是哪一个。另外,请指明列所具有的具体数据类型

标签: amazon-athena


【解决方案1】:

如果 MSSQL Server 是你的数据库,你可以试试下面的脚本来获得你想要的输出-

SELECT  
CAST(DATEDIFF(HH,localTime,serverTime)-1  AS VARCHAR) +'-'+
    CAST(DATEDIFF(HH,localTime,serverTime)  AS VARCHAR) [Hours],
COUNT(*) [Count]
FROM your_table
GROUP BY CAST(DATEDIFF(HH,localTime,serverTime)-1  AS VARCHAR) +'-'+
    CAST(DATEDIFF(HH,localTime,serverTime)  AS VARCHAR)

【讨论】:

    【解决方案2】:

    甲骨文

    如果你使用Oracle数据库作为系统,你可以使用这样的语句:

    select CONCAT(CONCAT (diff_hours,'-') , diff_hours+1) as Hours, count(diff_hours) as Count 
    from (select 24 * (to_date(LocalTime, 'YYYY-MM-DD hh24:mi') - to_date(ServerTime, 'YYYY-MM-DD hh24:mi')) diff_hours from T_TIMETABLE ) 
    group by diff_hours 
    order by diff_hours;
    

    注意:这不会显示空区间。

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2015-03-14
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      相关资源
      最近更新 更多