我需要帮助弄清楚雪花中的日期转换逻辑。关于这一点,文档并不够清楚。
在SQL Server中,我会尝试
SELECT CONVERT(DATE, '20200730', 101)
它给了我'07/30/2020‘。
如果我在Snowflake中尝试以下操作,
to_varchar('20200730'::date, 'mm/dd/yyyy')
它告诉我‘1970年8月22日’。为什么它会给出一个完全不同的日期?在获得正确日期的逻辑方面需要帮助。
发布于 2020-09-24 04:23:14
你所做的事情的问题是,你假设雪花正在将你的'20200730'::DATE
字符串转换成2020-07-03
。事实并非如此。您需要指定日期的输入格式。所以,基于你的问题有两个选择有点模糊:
如果您在表中有一个字符串,并且希望将其转换为日期,然后将其显示为格式化字符串:
SELECT TO_VARCHAR(TO_DATE('20200730','YYYYMMDD'),'MM/DD/YYYY');
--07/30/2020
如果表中的字段已经是日期,那么您只需要直接对该字段应用TO_VARCHAR()片段。
与SQL Server不同,Snowflake以相同的格式存储日期字段,无论您提供什么格式。您需要使用TO_VARCHAR
,以便在不同的way...or ALTER SESSION SET DATE_OUTPUT_FORMAT
中格式化该日期。
发布于 2020-09-24 02:32:57
试试生成2020-07-30
的select to_varchar(TO_DATE( '20200730', 'YYYYMMDD' ), 'MM/DD/YYYY');
您可能需要参考https://docs.snowflake.com/en/user-guide/date-time-input-output.html#timestamp-formats
https://stackoverflow.com/questions/64033859
复制相似问题