在 Snowflake 中将 YYYYMMDD 转换为 MM/DD/YYYY
Convert YYYYMMDD to MM/DD/YYYY in Snowflake
我需要帮助来弄清楚 Snowflake 中的日期转换逻辑。文档对此不够清楚。
在SQL服务器中,我会尝试
SELECT CONVERT(DATE, '20200730', 101)
它给了我“07/30/2020”。
如果我在 Snowflake 中尝试以下操作,
to_varchar('20200730'::date, 'mm/dd/yyyy')
它给了我“08/22/1970”。为什么它会给出一个完全不同的日期?在获取具有正确日期的逻辑方面需要帮助。
尝试 select to_varchar(TO_DATE( '20200730', 'YYYYMMDD' ), 'MM/DD/YYYY');
生成 2020-07-30
您可能需要参考https://docs.snowflake.com/en/user-guide/date-time-input-output.html#timestamp-formats
您正在做的事情的问题是您假设 Snowflake 正在将您的字符串 '20200730'::DATE
转换为 2020-07-03
。不是。您需要指定日期的输入格式。因此,基于您的问题的 2 个选项有点含糊:
如果您在 table 中有一个字符串,并且您希望将其转换为日期,然后将其作为格式化字符串返回:
SELECT TO_VARCHAR(TO_DATE('20200730','YYYYMMDD'),'MM/DD/YYYY');
--07/30/2020
如果 table 中的字段已经是日期,那么您只需直接针对该字段应用 TO_VARCHAR() 部分。
与 SQL 服务器不同,Snowflake 以相同的格式存储日期字段,无论您提供什么。您需要使用 TO_VARCHAR
以便以不同的方式格式化该日期...或者 ALTER SESSION SET DATE_OUTPUT_FORMAT
也可以。
我需要帮助来弄清楚 Snowflake 中的日期转换逻辑。文档对此不够清楚。
在SQL服务器中,我会尝试
SELECT CONVERT(DATE, '20200730', 101)
它给了我“07/30/2020”。
如果我在 Snowflake 中尝试以下操作,
to_varchar('20200730'::date, 'mm/dd/yyyy')
它给了我“08/22/1970”。为什么它会给出一个完全不同的日期?在获取具有正确日期的逻辑方面需要帮助。
尝试 select to_varchar(TO_DATE( '20200730', 'YYYYMMDD' ), 'MM/DD/YYYY');
生成 2020-07-30
您可能需要参考https://docs.snowflake.com/en/user-guide/date-time-input-output.html#timestamp-formats
您正在做的事情的问题是您假设 Snowflake 正在将您的字符串 '20200730'::DATE
转换为 2020-07-03
。不是。您需要指定日期的输入格式。因此,基于您的问题的 2 个选项有点含糊:
如果您在 table 中有一个字符串,并且您希望将其转换为日期,然后将其作为格式化字符串返回:
SELECT TO_VARCHAR(TO_DATE('20200730','YYYYMMDD'),'MM/DD/YYYY');
--07/30/2020
如果 table 中的字段已经是日期,那么您只需直接针对该字段应用 TO_VARCHAR() 部分。
与 SQL 服务器不同,Snowflake 以相同的格式存储日期字段,无论您提供什么。您需要使用 TO_VARCHAR
以便以不同的方式格式化该日期...或者 ALTER SESSION SET DATE_OUTPUT_FORMAT
也可以。