Presto SQL:TO_UNIXTIME

noo*_*erp 3 amazon-web-services presto amazon-athena trino

我想将可读的时间戳转换为 UNIX 时间。

例如:我想转换2018-08-24 18:42:161535136136000.

这是我的语法:

    TO_UNIXTIME('2018-08-24 06:42:16') new_year_ut
Run Code Online (Sandbox Code Playgroud)

我的错误是:

   SYNTAX_ERROR: line 1:77: Unexpected parameters (varchar(19)) for function to_unixtime. Expected: to_unixtime(timestamp) , to_unixtime(timestamp with time zone)
Run Code Online (Sandbox Code Playgroud)

Pio*_*sen 6

您需要将 varchar 包装在 CAST 中以添加时间戳:

to_unixtime(CAST('2018-08-24 06:42:16' AS timestamp)) -- note: returns a double
Run Code Online (Sandbox Code Playgroud)

如果您的时间戳值没有秒的分数(或者您对它不感兴趣),您可以转换为 bigint 以获得积分结果:

CAST(to_unixtime(CAST('2018-08-24 06:42:16' AS timestamp)) AS BIGINT)
Run Code Online (Sandbox Code Playgroud)

如果您的可读时间戳值是与上述格式不同的字符串,则需要使用date_parseparse_datetime进行转换。有关更多信息,请参阅https://trino.io/docs/current/functions/datetime.html

注意:在处理时间戳值时,请记住:https : //github.com/trinodb/trino/issues/37

  • 谢谢@PiotrFindeisen!它没有给我错误,但它返回“1.535092936E9”,我想要的是“1535136136000” (3认同)
  • `TO_UNIXTIME` 返回一个 `double`(因为时间戳具有毫秒精度),因此您需要转换为 bigint。更新。 (2认同)