我正在使用 Oracle 11g 架构
我想从日期中选择月份和日期,将其连接起来并将其放入一列中。
我在这里的语法是有道理的,但它抛出了一个错误..
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:缺少右括号”
任何帮助是极大的赞赏。谢谢。
我正在使用 Oracle 11g 架构
我想从日期中选择月份和日期,将其连接起来并将其放入一列中。
我在这里的语法是有道理的,但它抛出了一个错误..
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:缺少右括号”
任何帮助是极大的赞赏。谢谢。
先说几点...
ret_date
是列,请不要将其封装在引号 ( '
) 中,因为您将无法将字符串'ret_date'
转换为日期。但是,假设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_char
并且to_date
两者都使用日期时间格式模型,它们有很多选项。
请不要这样做。始终将日期存储为日期
您的评论ret_date
是一个日期,列wed
是一个字符。您收到错误绑定变量未声明,因为您尚未指定变量。我将假设它ret_date
在另一个表中,因为它是一个日期,在这种情况下会丢失 values 关键字并直接从该表中插入:
insert into ob_select_lst12_spg (wed)
select to_char(ret_date,'mmdd')
from the_other_table
但这不应该是必需的,您始终可以在退出数据库时将日期转换为您想要的任何内容。如果您不将其作为日期存储在数据库中,那么很容易出现错误和不正确的值。我个人会将列更改wed
为日期,在这种情况下,您的查询变得非常简单:
insert into ob_select_list12_spg (wed)
select ret_date
from the_other_table
然后,在从数据库中进行选择时,您可以根据需要使用正确的日期时间格式模型。
从日期列获取日期、月份的示例查询:
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;
您缺少额外的括号。打开的数量(
是 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)