sql - 微秒到时间戳 impala
问题描述
我正在尝试将微秒转换为 Impala 中的时间戳。
我尝试了以下但需要格式“ YYYY-MM-DD HH:MM:SS
”:
select TIME_JIFFY,
(cast(TIME_JIFFY as bigint) - 4*60*60*65536) as jiffy_in_est,
(floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) as no_of_days,
(floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536)) / 65536 / 60 / 60)) as jiffy_hours,
(floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - (((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536) + ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536)) / 65536 / 60 / 60)) * 60 * 60 * 65536))) / 65536 / 60)) as jiffy_minutes,
(floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - (((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536) + ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536)) / 65536 / 60 / 60)) * 60 * 60 * 65536) + ((Floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - (((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536) + ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) - ((floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24))) * 24 * 60 * 60 * 65536)) / 65536 / 60 / 60)) * 60 * 60 * 65536))) / 65536 / 60)) * 60 * 65536))) / 65536)) as jiffy_seconds,
(to_date(days_add(to_date(to_utc_timestamp('1980-01-01','EST5EDT')),(floor(((cast(TIME_JIFFY as bigint) - 4*60*60*65536) / 65536 / 60 / 60 / 24)))))) as emni
From gg.table_name
解决方案
您需要将微秒转换为 Unix 时间(秒,bigint),然后您可以使用内置函数from_unixtime
获取格式“YYYY-MM-DD HH:MM:SS”:
select from_unixtime(CAST(TIME_JIFFY / 1000000 AS BIGINT),"yyyy-MM-dd HH:mm:ss");
+----------------------------------------------------------------------------------+
| from_unixtime(cast(TIME_JIFFY / 1000000 as bigint), 'yyyy-mm-dd hh:mm:ss') |
+----------------------------------------------------------------------------------+
| 2014-02-14 16:21:01 |
+----------------------------------------------------------------------------------+
推荐阅读
- javascript - 为什么 Button 组件在点击时改变位置?
- git - 在使用 YAML 配置时,清理 Azure DevOps Pipeline 设置中的所有构建目录都不起作用
- angular - 检查来自组件的自定义反应中的当前验证器
- swift - SwiftUI:ObservableObject 在重绘时不会保持其状态
- c# - 同步 KeyedCollection 是否有 .net core 3.1 替代方案
(与异步/等待兼容) - c# - 在使用 C# 加入 ASP.NET 中的两个表时分页?
- javascript - 如何在函数中连接 jquery 字符串?
- r - RStudio 中的 ARIMA 问题 - 用于股票的 ARIMA
- java - 为什么调用同一个方法会在不同的方法中对运行时间产生不同的影响呢?
- powerbi - 如何从 sql 表中提取最新记录到 POwer BI 仪表板。?