FILE FORMAT对象中的TIMESTAMP_FORMAT选项未分析Snowflake中的自定义日期字符串



在FILE FORMAT定义中使用以下TIMESTAMP_FORMAT时:

CREATE OR REPLACE FILE FORMAT FF
TYPE = 'CSV'
FIELD_DELIMITER = '^'
DATE_FORMAT = 'yyyy/MM/dd'
TIME_FORMAT = 'hh:mm:ss'
TIMESTAMP_FORMAT = 'MON DD YYYY HH12:MIAM'
SKIP_HEADER = 1;

从一个阶段加载时,我收到以下值为"1946年11月21日下午12:17"的错误:

Timestamp 'Nov 21 1946 12:17pm' is not recognized..."

然而,当使用TO_TIMESTAMP方法时,它识别出字符串fine:

SELECT TO_TIMESTAMP('Nov 21 1946 12:17pm', 'MON DD YYYY HH12:MIAM'); Output: 1946-11-21 12:17:00.000

我引用了雪花文档中的时间戳格式:https://docs.snowflake.com/en/user-guide/date-time-input-output.html#timestamp-格式化

你知道为什么会这样吗?谢谢

为了总结这个问题,在"1946年11月21日下午12:17"之前有一个额外的空间,这就是转换失败的原因:

SELECT TO_TIMESTAMP('Nov 21 1946 12:17pm', 'MON DD YYYY HH12:MIAM'); -- works
SELECT TO_TIMESTAMP(' Nov 21 1946 12:17pm', 'MON DD YYYY HH12:MIAM'); -- fails
Can't parse ' Nov 21 1946 12:17pm' as timestamp with format 'MON DD YYYY HH12:MIAM'

最新更新