Varchar2迄今为止在Oracle中

时间:2014-12-14 21:54:00

标签: sql oracle

有人可以帮我解决如何将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。为什么?

3 个答案:

答案 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所提到的字符串。