繁体   English   中英

尝试 TO_DATE function 进行过程转换时出错

[英]Getting error while trying TO_DATE function for procedure conversion

在 Teradata 程序中使用了一个演员 function 作为

cast(<col_name> AS DATE FORMAT 'MM/DD/YY'

它给了我 output 作为“MM/DD/YY”格式的 DATE 数据类型。 我正在尝试在 SNOWFLAKE 中使用类似的 function,这样它就会给我相同的 output。 我尝试过这样的事情

TO_CHAR(TO_DATE(<col_name>,'MM/DD/YY')

它也以该格式给了我 output ,但是每当我运行 Snowflake 程序时,都会在表中插入不同的结果。 这是因为我的代码给我的结果是 varchar 数据类型,而列是 Date 数据类型。 任何关于如何进行这种转换的想法都将受到高度赞赏。

雪花有TRY_DO_DATE ,支持格式:

SELECT col_name, TRY_TO_DATE(col_name, 'MM/DD/YY') AS col_name_casted
FROM tab

您的数据似乎已存储为日期列。 您可以为输入和 output 日期格式设置一个 session 参数,因此如果您有日期的标准表示,则可以在处理中本地使用它:

alter session set DATE_INPUT_FORMAT='MM/DD/YY';
alter session set DATE_OUTPUT_FORMAT='MM/DD/YY';

select <col_name> from table; -- Now will show as MM/DD/YY for date columns

如果您不想这样做,那么要对其进行格式化,您需要将其转换为字符、格式,然后转换为日期:

select to_char(col_name,'MM/DD/YY'); -- converts date to char format
select to_date(to_char(col_name,'MM/DD/YY'),'MM/DD/YY'); -- effectively is a no-op

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM