首页 > 解决方案 > 使用 MM/DD/YY 的 TO_DATE 将字符串转换为日期会为 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 之后的日期。它返回正确的世纪信息。仅适用于 1970 年之前的日期,将其转换为 21 世纪。如果这是已知行为,请告诉我。如果是这样,如何将这些格式转换为标准日期格式?

在此处输入图像描述

标签: dateselectsnowflake-cloud-data-platform

解决方案


在 Snowflake 中,如何解释YY取决于session 参数,默认为 1970。TWO_DIGIT_CENTURY_START

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

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

推荐阅读