Presto sql 函数 date_parse 在特定日期 (1960-01-01) 失败
Presto sql function date_parse fails for specific date (1960-01-01)
如何解决 date_parse('1960-01-01', '%Y-%m-%d')
的这个 presto sql 错误
此函数适用于其他日期。
这是由于 Presto 对时间戳的建模方式存在一个长期存在的问题。长话短说,时间戳的实现不符合 SQL 规范,它错误地尝试将它们视为“时间点”或“即时”值并在时区规范内解释它们。对于某些日期和时区规则,由于夏令时转换等原因,这些值未定义。
这是 fixed in recent versions of Trino (formerly known as Presto SQL),因此您可能需要更新。
顺便说一句,您可以使用 date()
函数或将值转换为 date
:
将 varchar
转换为 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)
如何解决 date_parse('1960-01-01', '%Y-%m-%d')
的这个 presto sql 错误此函数适用于其他日期。
这是由于 Presto 对时间戳的建模方式存在一个长期存在的问题。长话短说,时间戳的实现不符合 SQL 规范,它错误地尝试将它们视为“时间点”或“即时”值并在时区规范内解释它们。对于某些日期和时区规则,由于夏令时转换等原因,这些值未定义。
这是 fixed in recent versions of Trino (formerly known as Presto SQL),因此您可能需要更新。
顺便说一句,您可以使用 date()
函数或将值转换为 date
:
varchar
转换为 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)