首页 > 解决方案 > Presto sql 函数 date_parse 在特定日期失败 (1960-01-01)

问题描述

如何解决 date_parse('1960-01-01', '%Y-%m-%d') 的 presto sql 错误

在此处输入图像描述

此功能适用于其他日期。

标签: prestotrino

解决方案


这是由于 Presto 如何建模时间戳的长期问题。长话短说,时间戳的实现不符合 SQL 规范,它错误地尝试将它们视为“时间点”或“即时”值并在时区规范中解释它们。对于某些日期和时区规则,由于夏令时转换等原因,值未定义。

这在最新版本的 Trino以前称为 Presto SQL )中已修复,因此您可能需要更新。

顺便说一句,您可以使用函数将 a 转换varchar为 a或将值转换为:datedate()date

trino> select date('1960-01-01');
   _col0
------------
 1960-01-01
(1 row)

trino> select cast('1960-01-01' as date);
   _col0
------------
 1960-01-01
(1 row)

推荐阅读