gpt4 book ai didi

postgresql - 将 2 位数日期转换为 1900 年代的年份

转载 作者:行者123 更新时间:2023-11-29 12:02:58 25 4
gpt4 key购买 nike

我正在使用 PostgreSQL 9.6 中的字符串操作函数将 2 位数的文本年份转换为 4 位数的年份。我能够将字符串转换为日期和年份,但我一直在 2000 年代而不是 1900 年代。

select extract(year from to_date('58', 'YY'));

这将返回 2058 而不是 1958。

现在我所有的 2 位数日期都在 1900 年代,但我在 to_date() 函数中找不到将日期强制为 1900 年代的 max 函数或参数。

有人知道如何改变这种行为吗?

最佳答案

确切的行为已定义in the manual here :

If the year format specification is less than four digits, e.g. YYY, and the supplied year is less than four digits, the year will be adjusted to be nearest to the year 2020, e.g. 95 becomes 1995.

大胆强调我的。

由于 2058 年比 1958 年更接近 2020 年,因此第一个是您从 to_date('58', 'YY') 获得的结果。

目前没有覆盖此行为的设置。如果您不同意默认值,则必须明确提供所需的世纪。类似于 what Haleemur commented :

SELECT to_date('19' || <2-digit-year-variable>, 'YYYY');

但是to_date()采用 text 输入,而不是 integer。整数输入会引发如下异常:

ERROR:  function to_date(integer, unknown) does not exist

如果通过:

convert a 2-digit text year into a 4 digit year

...你的意思是 4 位数字 text 年份,使用 to_char() 更简洁:

SELECT to_char(to_date('19' || '58', 'YYYY'), 'YYYY')

to_char()可以返回可变格式的文本(与 extract(), which returns a double precision number 不同)。

如果输入是有效的 2 位数字字符串(只有 2 位数字),一个简单的连接也可以完成这项工作

SELECT '19' || <2-digit-year-variable>

关于postgresql - 将 2 位数日期转换为 1900 年代的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com