当前位置: 首页 > 知识库问答 >
问题:

如何将存储为bigint的Java时间戳转换为Presto中的时间戳?

裴理
2023-03-14

我几天来一直在找这个。

{
  "type" : "record",
  "name" : "messages",
  "namespace" : "com.company.messages",
  "fields" : [ {
    "name" : "timeStamp",
    "type" : "long",
    "logicalType" : "timestamp-millis"
  }, {
  …
select "timestamp", typeof("timestamp") as type,
current_timestamp as "current_timestamp", typeof(current_timestamp) as current_type
from db.messages limit 1
timestamp     type   current_timestamp                  current_type
1497210701839 bigint 2017-06-14 09:32:43.098 Asia/Seoul timestamp with time zone
select cast("timestamp" as timestamp) from db.messages limit 1
line 1:16: Cannot cast bigint to timestamp
select from_unixtime("timestamp") as "timestamp" from db.messages limit 1
timestamp  
+49414-08-06 07:15:35.000

当然,更经常使用Presto的其他人知道如何正确地表达转换。(我无法重新启动Presto或Hive服务器来强制时区进入UTC(顺便说一句)。

共有1个答案

蒯宇定
2023-03-14

我没有找到从Java时间戳(1970年以来的毫秒数)到时间戳的直接转换,但可以通过to_unixtime并添加毫秒作为间隔来完成:

presto> with t as (select cast('1497435766032' as bigint) a)
     -> select from_unixtime(a / 1000) + parse_duration(cast((a % 1000) as varchar) || 'ms') from t;
          _col0          
-------------------------
 2017-06-14 12:22:46.032 
(1 row)

(虽然很麻烦,但很管用)

 类似资料:
  • 问题内容: 如何在SQL Server中将UNIX时间戳(bigint)转换为DateTime? 问题答案: 尝试:

  • 问题内容: 论坛成员 我在Java中遇到日期时间问题。实际上,我正在接收 格式为2012-02-27T01:10:10 的开始日期,并且我想将接收到的日期插入具有datetime数据类型的数据库中。 实际上,我尝试通过以下代码将收到的开始日期转换为日期时间 但是使用上面的代码,只有 日期被添加到我的数据库中,例如2012-02-27 00:00:00 我也想将时间添加到数据库中,但是当我将Simp

  • 问题内容: 我将时间作为Unix时间戳存储在MySQL数据库中,并将其发送到一些JavaScript代码。我怎么会得到时间呢? 例如,以HH / MM / SS格式。 问题答案: let unix_timestamp = 1549312452 有关Date对象的更多信息,请参考MDN或ECMAScript5规范。

  • 问题内容: 我正在寻找将UTC时间字符串转换为Unix时间戳的选项。 我拥有的字符串变量是,需要将其转换为unix时间戳,例如 任何想法如何做到这一点? 问题答案: 首先,unix时间戳没有时间,但以UTC为单位。 在包有功能解析与预计解析时的布局。布局是从参考时间开始构造的。因此,在您的情况下,布局应为。使用Parse之后,您将获得一个可以调用Unix来接收Unix时间戳的结构。

  • 然而,我想知道你如何将它转换成没有GMT或年份的时间和日期,例如Sat 04月03日14:00:00,这就是它 我的Add.java 我的配置文件.java 这里的任何帮助都将得到极大的理解。

  • 问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。