在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'