Snowflake中的Sql将日期从106(2020年4月13日)更改为105(2020年3月4日)



所以我在一个表中有几个日期字段的格式为(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';

相关内容

  • 没有找到相关文章

最新更新