如何解决如何在 Presto SQL (AWS Athena),“2021-05-03T00: 00: 00.000Z”格式中将时间戳转换为日期?
请注意下面的对话对“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”
注意:我分析了下面的链接,但对于这些场景,我没有看到任何实际的解决方案。
How to convert timestamp to date in Presto?
https://prestodb.io/docs/current/functions/datetime.html
解决方法
您的时间戳似乎采用 ISO8601 格式。您可以通过以下方式将它们转换为日期:
- 使用
from_iso8601_timestamp
函数将它们转换为timestamp(p) with time zone
。 - 通过强制转换将时间戳转换为日期。
SELECT cast(from_iso8601_timestamp('2021-03-19T00:00:00.000Z') AS date)
_col0
------------
2021-03-19
(1 row)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。