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

Sac*_*mes 1 snowflake-cloud-data-platform

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

Ric*_*ane 7

小心 YY,因为 Oracle 中的 RR 与 Snowflake 的 YY 表现不同。Oracle 中的 RR 基本上将两位数的年份变成了“最接近 2000 年”的模型,例如 49 的 RR 字符串给你 2049,51 的 RR 字符串给你 1951。

如果您需要 RR“功能”,请参阅此链接中对 TWO_DIGIT_CENTURY_START 会话参数的引用:

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-season-start

因此,您可以使用 YY,但您需要在执行选择之前运行 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
Run Code Online (Sandbox Code Playgroud)

我希望这有助于...丰富