有人可以帮我解决如何将varchar列转换为Date数据类型的问题吗?
我的createDate列具有格式示例20050923中的VarChar2数据类型 我想将此列转换为格式示例2005/09/23
ALTER TABLE test ADD (new_create_date DATE);
UPDATE test SET new_create_date=TO_DATE(createDate,'MM/DD/YYYY');
当我运行这些sql时,我得到格式23-aug-2005。为什么?
答案 0 :(得分:1)
内部日期存储为7字节值。格式化不是存储在那里的东西。从表中提取数据时会得到格式化。
试试这个。
SELECT TO_CHAR(NEW_CREATE_DATE,'MM/DD/YYYY')
FROM TEST
答案 1 :(得分:1)
你可以这样做:
update test
set new_create_date to_date(createDate, 'YYYYMMDD');
您只需要为to_date()
提供正确的格式字符串。
答案 2 :(得分:1)
这是因为您的数据库NLS_DATE_FORMAT必须是DD-MON-YYYY格式,您可以使用下面提到的查询来检查。
SELECT * 来自nls_session_parameters WHERE参数='NLS_DATE_FORMAT';
根据定义,to_date(x,format)将字符串即x转换为日期时间,格式部分是一个可选部分,表示字符串值x的格式。
你可以在你的情况下进一步使用to_char(x,format)函数,它将x datetime转换为EvilTech所提到的字符串。