Sql 配置单元中的时间戳操作

Sql 配置单元中的时间戳操作,sql,hadoop,hive,impala,Sql,Hadoop,Hive,Impala,如何在配置单元中减去2个时间戳列,并将结果以等效的小时格式存储在单独的列中?假设您有给定格式的时间戳:2016-10-16 10:51:00.000 您可以尝试以下操作: SELECT cast( round( cast((e-s) as double) * 1000 ) as int ) time_difference FROM (SELECT cast(starttime as double) s, cast(endtime as double) e fr

如何在配置单元中减去2个时间戳列,并将结果以等效的小时格式存储在单独的列中?

假设您有给定格式的时间戳:2016-10-16 10:51:00.000

您可以尝试以下操作:

SELECT
  cast(
    round(
      cast((e-s) as double) * 1000
    ) as int
  ) time_difference
FROM (SELECT cast(starttime as double) s, cast(endtime as double) e from table1) q;

它将以毫秒为单位显示两个时间戳的差异。然后,您可以将其转换为预期格式(小时、天等)。

使用unix_timestamp函数将配置单元时间戳转换为自epoch起的秒数。减去unix timestemp结果将以秒为单位给出答案

    SELECT start_dttm,
             (unix_timestamp(end_dttm) - unix_timestamp(start_dttm))/60 AS duration_in_minutes
    FROM dev_edw.audit_history_hb
    WHERE script_name LIKE '%0_hive_d%'
            AND parent_audit_id is null
    ORDER BY start_dttm desc

它给我一个错误,说cast函数后缺少关键字,希望您按照模式重命名列。你能告诉我你所犯的全部错误吗?反过来怎么样
将填充有小时的列添加到时间戳列中,并在另一个时间戳列中获取输出?我基本上在配置单元的表中有两列:start_date和end_date,我想通过运行DML来填充一个名为appeased_hours的新列