雪花中的sql将日期从106(2020年4月13日)更改为105(2020年4月13日)

mzmfm0qo  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(325)

所以我在一个表中有几个日期字段,格式如下 (DD-MON-YYYY) 我需要把它们转换成 (DD-MM-YYYY) 字段本身已经是 VARCHAR . 在雪花中,我将如何改变。这是我到目前为止所做的。
select to_date(end_date, 'dd-mm-yyyy') from error: Can't parse '31-JAN-2020' as date with format 'dd-mm-yyyy'

jtw3ybtb

jtw3ybtb1#

一种简单的方法是将字符串转换为日期,然后以新格式返回到字符串,示例如下:

--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;

我希望这有助于…rich

bkhjykvo

bkhjykvo2#

这个 to_date() 函数提供将varchar字段转换为日期字段的功能,而不指定日期的格式。所以,你想运行这个:

SELECT TO_DATE(end_date, 'DD-MON-YYYY');

这将输出日期作为日期。如果要指定如何查看日期,有2个选项:
首先,将其转换回首选格式的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';

相关问题