use*_*548 17 sql oracle datetime
我在表格中存在一个日期列MM/DD/YYYY格式.我必须以YYYY-MM-DD格式即XSD日期格式选择并将相同的日期存储在另一个表中.但我无法做到.我正在使用此查询:
select to_date(date_column,'YYYY-MM-DD') from table;
Run Code Online (Sandbox Code Playgroud)
但我仍然无法做到这一点.给我错误
ORA-01843:不是有效月份
Yah*_*hia 57
使用
select to_char(date_column,'YYYY-MM-DD') from table;
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 15
听起来你已经错了.如果您的现有数据是MM/DD/YYYY格式,那么您需要:
select to_date(date_column,'MM/DD/YYYY') from table;
Run Code Online (Sandbox Code Playgroud)
将现有数据转换为DATE值.(我确实想知道为什么他们没有存储为日期,说实话......)
如果要一步执行转换,您可能需要:
select to_char(to_date(date_column,'MM/DD/YYYY'), 'YYYY-MM-DD') from table;
Run Code Online (Sandbox Code Playgroud)
换句话说,对于每一行,以MM/DD/YYYY格式解析它,然后将其重新格式化为YYYY-MM-DD格式.
(我仍然建议尝试将数据保持在"自然"类型中,而不是首先将其存储为文本.)
我假设你可以使用Oracle SQL Developer,你可以从这里下载.
您可以定义要使用的日期格式:
ALTER SESSION SET nls_date_format='yyyy-mm-dd';
Run Code Online (Sandbox Code Playgroud)
有了这个,现在你可以执行这样的查询:
SELECT * FROM emp_company WHERE JDate = '2014-02-25'
Run Code Online (Sandbox Code Playgroud)
如果您想更具体,可以像这样定义日期格式:
ALTER SESSION SET nls_date_format='yyyy-mm-dd hh24:mi:ss';
Run Code Online (Sandbox Code Playgroud)
要将DATE列转换为另一种格式,只需使用TO_CHAR()所需的格式,然后将其转换回类型DATE:
SELECT TO_DATE(TO_CHAR(date_column, 'DD-MM-YYYY'), 'DD-MM-YYYY') from my_table
Run Code Online (Sandbox Code Playgroud)