所以我在一个表中有几个日期字段的格式为(DD-MON-YYYY)
,我需要将它们转换为(DD-MM-YYYY)
。字段本身已经是VARCHAR
了。在Snowflake中,我将如何做出这种改变。以下是我迄今为止所做的工作。
select to_date(end_date, 'dd-mm-yyyy') from
error: Can't parse '31-JAN-2020' as date with format 'dd-mm-yyyy'
一种简单的方法是将字符串转换为日期,然后再转换回新格式的字符串,示例如下:
--create an example table to test
CREATE TEMPORARY TABLE xyz (my_dt_string VARCHAR(100));
--insert a couple records
INSERT INTO xyz VALUES ('31-JAN-2020'), ('13-APR-2020');
--test a conversion, from string to date back to string
SELECT my_dt_string,
TO_CHAR(TO_DATE(my_dt_string, 'dd-mon-yyyy'), 'dd-mm-yyyy') converted
FROM xyz;
--looks good? run the following
UPDATE xyz
SET my_dt_string = TO_CHAR(TO_DATE(my_dt_string, 'dd-mon-yyyy'), 'dd-mm-yyyy');
--take a look
select * from xyz;
我希望这能帮助。。。富
to_date()
函数使您能够将VARCHAR字段转换为DATE字段,而不指定日期的格式。所以,你想运行这个:
SELECT TO_DATE(end_date, 'DD-MON-YYYY');
这将输出日期作为日期。如果你想指定如何查看日期,你有两个选择:
首先,将其转换回首选格式的VARCHAR:
SELECT TO_VARCHAR(TO_DATE(end_date, 'DD-MON-YYYY'),'DD-MM-YYYY');
其次,将会话参数DATE_OUTPUT_FORMAT
更改为您希望显示的日期格式:
ALTER SESSION SET DATE_OUTPUT_FORMAT = 'DD-MM-YYYY';
这也可以为用户完成,而不是使用的会话
ALTER USER SET DATE_OUTPUT_FORMAT = 'DD-MM-YYYY';