将 Oracle to_date('24-03-20','DD-MM-RR') 转换为雪花

Convert Oracle to_date('24-03-20','DD-MM-RR') to snowflake

我需要你的小帮助。我必须在雪花中使用 to_date('24-03-20','DD-MM-RR') Oracle 函数。两个输出应该匹配。谁能帮帮我。

小心 YY,因为 Oracle 中的 RR 行为与 Snowflake 的 YY 不同。 Oracle 中的 RR 基本上将两位数年份设为 "closest to the year 2000" 模型,例如RR 49串给你2049,RR 51串给你1951.

如果您需要 RR "functionality",请参阅 TWO_DIGIT_CENTURY_START 会话参数参考 link:

https://docs.snowflake.com/en/sql-reference/functions-conversion.html#date-and-time-formats-in-conversion-functions

该参数在此处进一步定义:

https://docs.snowflake.com/en/sql-reference/parameters.html#label-two-digit-century-start

因此,您可以使用 YY,但在执行 select 之前,您需要 运行 一个 ALTER SESSION 命令,示例如下:

ALTER SESSION SET TWO_DIGIT_CENTURY_START = 1970; --the default
SELECT to_date('24-03-20', 'DD-MM-YY');           --2020-03-24

ALTER SESSION SET TWO_DIGIT_CENTURY_START = 1900; --not what you want
SELECT to_date('24-03-20', 'DD-MM-YY');           --1920-03-24


ALTER SESSION SET TWO_DIGIT_CENTURY_START = 1950; --RR like
SELECT to_date('24-03-20', 'DD-MM-YY');           --2020-03-24
SELECT to_date('24-03-49', 'DD-MM-YY');           --2049-03-24
SELECT to_date('24-03-50', 'DD-MM-YY');           --1950-03-24

希望对你有所帮助...丰富