sql - 在雪花中将 YYYYMMDD 转换为 MM/DD/YYYY
问题描述
我需要帮助来弄清楚 Snowflake 中的日期转换逻辑。文档对此不够清楚。
在 SQL Server 中,我会尝试
SELECT CONVERT(DATE, '20200730', 101)
它给了我'07/30/2020'。
如果我在雪花中尝试以下内容,
to_varchar('20200730'::date, 'mm/dd/yyyy')
它给了我'08/22/1970'。为什么它会给出一个完全不同的日期?需要帮助以获取正确日期的逻辑。
解决方案
您正在做的问题是您假设 Snowflake 正在将您的字符串转换'20200730'::DATE
为2020-07-03
. 它不是。您需要指定日期的输入格式。因此,基于您的问题的 2 个选项有点含糊:
如果您在表格中有一个字符串,并且您希望将其转换为日期,然后将其作为格式化字符串返回:
SELECT TO_VARCHAR(TO_DATE('20200730','YYYYMMDD'),'MM/DD/YYYY');
--07/30/2020
如果表中的字段已经是日期,那么您只需将 TO_VARCHAR() 块直接应用于该字段。
与 SQL Server 不同,Snowflake 以相同的格式存储日期字段,无论您提供什么。您需要使用TO_VARCHAR
来以不同的方式格式化该日期......或者ALTER SESSION SET DATE_OUTPUT_FORMAT
也可以使用。
推荐阅读
- amazon-web-services - 启动具有较小根卷存储的实例
- javascript - 节点.js | 将一个数组中的元素插入另一个数组中的随机位置
- html - 制作线条动画加载器
- css - 元标签的响应式网页设计
- encode - 如何使用 c# 将 è、à 等国际字符转换为 excel 中的普通字符(我使用的是 ClosedXML)
- python - `np.add.at` 到二维数组
- c# - 如何在我的语法中找到错误的字符
- java - 如何在二维字符数组的空单元格中插入占位符值
- c++ - 使用 CFileDialog 打开文件失败时如何捕获异常
- c++ - 当某个进程不活动时如何防止我的dll运行