我拥有的日期列在varchar2
其中,我想将这些值转换为YYYY-MM-DD
DATE
7/26/2013
7/29/2013
8/1/2013
8/4/2013
7/28/2013
7/31/2013
8/3/2013
7/30/2013
8/5/2013
7/25/2013
8/2/2013
8/6/2013
7/27/2013
VARCHAR
列中所以为了现在以不同的方式显示它,您需要先将字符串转换为日期,然后再转换回字符串
如果您确定所有“日期”确实具有正确(且相同)的格式,那么以下应该有效:
select to_char(to_date(date, 'mm/dd/yyyy'), 'yyyy-mm-dd')
from the_table;
但是,如果这给您一个错误,我不会感到惊讶,因为一行或多行的日期格式不同。如果您从一开始就将列定义为类型,则不可能发生的事情DATE
。
您真的应该考虑将该列更改为真正的DATE
列。
顺便说一句:DATE
对于这样一个专栏来说,这是一个可怕的名字。它是一个保留字,它根本不会告诉您该列中实际存储的内容(“开始日期”、“结束日期”、“出生日期”、“到期日”...... )
您必须将字符串date
转换为char
预期格式,然后再转换为
select TO_CHAR(TO_DATE(datecol, 'MM/DD/YYYY'),'YYYY-MM-DD')
from your_table
select to_char(TO_DATE("Date", 'MM/DD/YYYY'),'yyyy-mm-dd')
from Table1
您可以使用 REGEXP_REPLACE 函数来操作字符串或 to_date 和 to_char 将字符串转换为日期,而不是使用不同格式的字符串。