如何插入表列值:month&列datetype的日期

时间:2012-06-13 21:09:39

标签: sql oracle11g concatenation oracle-sqldeveloper datepart

我正在使用Oracle 11g Schema

我想从连接它的日期中选择月份和日期并将其放入列中。

我在这里的语法是有道理的,但它抛出错误..

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

“SQL错误:ORA-00907:缺少右括号”

非常感谢任何帮助。 感谢。

3 个答案:

答案 0 :(得分:2)

首先要点......

  1. 您的表名在
  2. 中有空格
  3. 由于表格中有多列,
  4. 导致列数不足
  5. 你真的不应该这样做
  6. 如果ret_date是列,请不要将其封装在引号(')中,因为您无法将字符串'ret_date'转换为日期。
  7. 但是,假设ret_date是一个看起来像13-06-2012

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

    如果ret_date是日期数据类型,则可以删除内部转换。

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

    to_charto_date都使用datetime format models,其中包含多个选项。


    请不要这样做。 始终将日期存储为日期


    从您的评论中ret_date是一个日期,而wed列是一个字符。您没有声明错误绑定变量,因为您没有指定变量。我将假设ret_date在另一个表中,因为它是一个日期,在这种情况下丢失值key-word并直接从该表插入:

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

    虽然这不是必需的,但您始终可以将日期转换为数据库中 exit 所需的任何内容。如果你没有将它作为日期存储在数据库中,那么很容易出现错误和不正确的值。我个人会将列wed更改为日期,在这种情况下您的查询变得非常简单:

    insert into ob_select_list12_spg (wed)
    select ret_date
      from the_other_table
    

    从数据库中选择时,您可以根据需要使用正确的datetime format model

答案 1 :(得分:0)

您缺少额外的括号。已打开(的数量为8,关闭的)为5

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

<强>更新 确保不需要其他列(即允许NULL)

答案 2 :(得分:0)

从日期列获取日期,月份的示例查询:

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;

如果RET_DATE是日期数据类型,则使用

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