首页 > 解决方案 > Postgres to_date() 函数返回错误的年份

问题描述

我使用了一个查询: select to_date(substring('0303653597' from 0 for 7),'DDMMYY')

预期产量:1965-03-03
实际产量:2065-03-03

当我将字符串设置为 030370 或更高时,它的行为正确。
预定义的功能有什么问题?
我们可以使用任何其他功能来实现相同的功能吗?

标签: sqldatabasepostgresql

解决方案


根据文档

在 to_timestamp 和 to_date 中,如果年份格式规范小于四位,例如 YYY,并且提供的年份小于四位,则年份将调整为最接近 2020 年,例如,95 变为 1995。

在您的情况下,2065 比 1965 更接近 2020,因此它默认为 2065。


推荐阅读