Domanda

I'm using Oracle 11g Schema

I want to select the month and day from a date concatenate it and put it into a column.

The syntax I have here makes sense but its throwing an error of..

INSERT INTO OB_SELECT_LST12_SPG WED 
  VALUES (((TO_CHAR(TO_DATE('RET_DATE', MM))||( TO_CHAR(TO_DATE('RET_DATE', DD)));

"SQL Error: ORA-00907: missing right parenthesis"

Any help is greatly appreciated. Thanks.

È stato utile?

Soluzione

Some points first...

  1. Your table name has a space in in
  2. Your not enough columns error is caused by you having more than one column in the table
  3. You really shouldn't be doing this at all
  4. If ret_date is a column don't encapsulate it in quotation marks (') as you won't be able to convert the string 'ret_date' into a date.

However, assuming ret_date is a string that looks like 13-06-2012

insert into ob_select_lst12_spg_wed (my_column)
values(to_char(to_date(:ret_date,'dd-mm-yyyy'),'mmdd'));

If ret_date is a date data-type then you can remove the inner conversion.

insert into ob_select_lst12_spg_wed (my_column)
values(to_char(:ret_date,'mmdd'));

to_char and to_date both make use of datetime format models, which have a number of options.


Please don't do this though. Always store dates as dates


From your comments ret_date is a date and the column wed is a character. You're getting the error bind variable not declared because you haven't specified the variable. I'm going to assume that ret_date is in another table as it's a date, in which case lose the values key-word and insert directly from that table:

insert into ob_select_lst12_spg (wed)
select to_char(ret_date,'mmdd')
  from the_other_table

This shouldn't be required though, you can always convert a date into whatever you want on exit from the database. If you don't store it as a date in the database then it's easy for errors and incorrect values to creep in. I personally would change the column wed to a date, in which case your query becomes the very simple:

insert into ob_select_list12_spg (wed)
select ret_date
  from the_other_table

You can then use the correct datetime format model for your needs when selecting from the database.

Altri suggerimenti

Sample query to get date, month from date column:

Select ((To_Char(to_date('01-FEB-73','dd-mon-yy'), 'MM'))
       ||( To_Char(to_date('01-JAN-73','dd-mon-yy'), 'dd')))
 from dual;

if RET_DATE is date datatype then use

insert into table_name (columname) 
Select ((To_Char(RET_DATE, 'MM'))
           ||( To_Char(RET_DATE, 'dd')))
     from dual;

You are missing extra parentheses. Number of opened ( was 8 and closed ) was 5

INSERT INTO OB_SELECT_LST12_SPG(WED) 
VALUES ((TO_CHAR(TO_DATE(RET_DATE, MM)))||( TO_CHAR(TO_DATE(RET_DATE, DD))));

Update Make sure other columns are not required (i.e. Allow NULLs)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top