繁体   English   中英

如何在 Presto SQL(AWS Athena)“2021-05-03T00: 00: 00.000Z”格式中将时间戳转换为日期?

[英]How to convert timestamp to date in Presto SQL (AWS Athena), "2021-05-03T00: 00: 00.000Z" format?

请注意,对话对“current_timestamp”有肯定的结果,其格式为“2021-05-13 01:36:29.104 UTC”。 现在如果我分析最后三个例子,我得到了一个错误,我想这一定是由于时间戳中间的“T”和“Z”。 为什么在 Presto 中有带有“T”和“Z”的时间戳,以及另一个“”和“UTC”? 如何解决这个对话?

> 测试 - 阳性结果

select current_timestamp as "Today's timestamp"

2021-05-13 02:15:43.209 UTC

select cast(current_timestamp as date)

2021-05-13

select date(current_timestamp)

2021-05-13

select date_format(current_timestamp, '%Y-%m-%d') as "Today's date"

2021-05-13

> 测试 - 阴性结果

select cast(x.payment_date as date) FROM table_x x 

INVALID_CAST_ARGUMENT:值不能转换为日期:2021-03-19T00:00:00.000Z

select date(x.payment_date) FROM table_x x

INVALID_CAST_ARGUMENT:值不能转换为日期:2021-03-19T00:00:00.000Z

select date_format(x.payment_date, '%Y-%m-%d') FROM table_x x

SYNTAX_ERROR:第 1:20 行:无法解析列“x.payment_date”

注意:我分析了下面的链接,但对于这些场景,我没有看到任何实用的解决方案。

如何在 Presto 中将时间戳转换为日期?

https://prestodb.io/docs/current/functions/datetime.html

看起来您的时间戳采用 ISO8601 格式。 您可以通过以下方式将它们转换为日期:

  1. 使用from_iso8601_timestamp function 将它们转换为timestamp(p) with time zone
  2. 通过强制转换将时间戳转换为日期。
SELECT cast(from_iso8601_timestamp('2021-03-19T00:00:00.000Z') AS date)
   _col0
------------
 2021-03-19
(1 row)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM