问题描述
我有一个表ABC,其中的数据类型为Date的Z列。数据格式为YYYYMMDD。现在,我希望将上述格式转换为YYYY-MON-DD格式。有人可以帮忙吗?
解决方法
您可以使用to_char
TO_CHAR(Z,'YYYY-MON-DD')
,
根据重新格式化的目的,您可以将其显式转换为VARCHAR / CHAR并定义格式,也可以将显示格式更改为希望查看所有日期的方式:
ALTER SESSION SET DATE_OUTPUT_FORMAT = 'YYYY-MON-DD';
重要的是要理解,如果数据在DATE字段中,则将其存储为日期,并且日期的格式取决于您的查看首选项,而不是存储方式。
,由于日期字段的值存储为数字,因此必须将其转换为日期。
ALTER SESSION SET DATE_OUTPUT_FORMAT ='YYYY-MON-DD';
选择to_date(to_char(z),'YYYYMMDD');
,(添加此答案以总结和解决问题-因为线索和答案是通过评论分散的)
- 该问题表明列
var pair = data?.pairs[index]
的类型为pair
,但实际上似乎是Z
。 - 然后在将
DATE
之类的数字解析为日期之前,首先需要将其转换为NUMBER
。 - 将原始数字解析为日期后,就可以将其表示为根据需要设置格式的新字符串。
20201017
,
我不希望它有更好的表现,但是可以扔进去。您基本上可以将年,月和日分开,然后按照所需的格式将它们缝合在一起
set z='20200101';
select to_char((left($z,4) ||'-'|| substr($z,5,2) ||'-'|| right($z,2))::date,'YYYY-MON-DD')