使用 TO_DATE for MM/DD/YY 将字符串转换为日期给出了 1970 年之前日期的错误值 [snowflake-cloud-data-platform]

converting string to date using TO_DATE for MM/DD/YY gives wrong values for dates before 1970 [snowflake-cloud-data-platform]

正在尝试使用 TO_DATE 函数将日期字符串 03/31/69 转换为 1969-03-31 标准日期格式。

SELECT TO_DATE('03/31/69', 'MM/DD/YY');

预期值为 1969-03-31,但我得到的是 2069-03-31。

请告诉我如何正确处理雪花中 MM/DD/YY 格式的世纪。

这适用于1970 年之后的日期。它 returns 正确的世纪信息。仅适用于 1970 年 之前的日期,其转换为 21 世纪 。如果这是已知行为,请告诉我。如果是这样,如何将此类格式转换为标准日期格式?

在 Snowflake 中,YY 的解释方式取决于 the TWO_DIGIT_CENTURY_START session parameter,默认为 1970。

要获得您想要的输入数据结果,您需要将参数更改为不大于 1969 的值:

ALTER SESSION SET TWO_DIGIT_CENTURY_START = 1950;
SELECT TO_DATE('03/31/69', 'MM/DD/YY');