oracle用sql 语句如何向表中插入时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle用sql 语句如何向表中插入时间?相关的知识,希望对你有一定的参考价值。

如果是插入日期类型数据的话,先用to_date转换再插入就可以了。
例:insert into 表(c_date) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
参考技术A oracle用sql 语句如何向表中插入时间?
如果是插入日期类型数据的话,先用to_date转换再插入就可以了。
例:insert into 表(c_date) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
参考技术B 已经有人回答了,既然看到我也说说
insert into 表(c_date) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
如果不需要全字段的插入,比如表是不可以为空的话可以这样
insert into 表(c_date)(字段1,...,字段end
) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
values字段对应前面表的字段
参考技术C 你是要获取当前时间来插入表吧
select sysdate from dual;
参考技术D to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')

oracle/sql中如何根据条件向表中插入数据

【中文标题】oracle/sql中如何根据条件向表中插入数据【英文标题】:How to insert data into a table based on conditions in oracle/sql 【发布时间】:2013-11-12 15:08:49 【问题描述】:

我有一张桌子1

Date        Sec_ID  Version   value  col5 col6 col7
20131111     001       1       100
20131112     002       2       99

我有一个存储过程可以将新数据插入到 table1 中

所以如果我插入新的日期行:

20131111    001   2   111
20130101    003   1   88
20131111    004   1    90

table1 将类似于:

Date        Sec_ID  Version   value  col5 col6 col7
20131111     001        2       111
20131112     002        2       99
20130101     003        1       88
20131111     004        1       90

要求:Date 和 Sec_ID 组成一个主键。 对于具有相同日期和相同 Sec_ID 的数据,更新其版本和其他列。 在这种情况下,对于:

20131111     001       1       100

当有新数据时:

20131111     001       2       111 

被插入

它会保留

20131111     001       2       111

只有。

谢谢!

【问题讨论】:

你看过MERGE command吗? 【参考方案1】:

您似乎想MERGE。如果您的表名为 t42,您可以执行以下操作:

select * from t42;

DT            SEC_ID    VERSION      VALUE
--------- ---------- ---------- ----------
11-NOV-13          1          1        100 
12-NOV-13          2          2         99 

merge into t42
using (
  select date '2013-11-11' as dt, 1 as sec_id, 2 as version, 111 as value
    from dual
  union all select date '2013-01-01', 3, 1, 88 from dual
  union all select date '2013-11-11', 4, 1, 90 from dual
) new_data
on (new_data.dt = t42.dt and new_data.sec_id = t42.sec_id)
when matched then
  update set t42.version = new_data.version, t42.value = new_data.value
when not matched then
  insert (t42.dt, t42.sec_id, t42.version, t42.value)
  values (new_data.dt, new_data.sec_id, new_data.version, new_data.value);

3 rows merged.

select * from t42;

DT            SEC_ID    VERSION      VALUE
--------- ---------- ---------- ----------
11-NOV-13          1          2        111 
12-NOV-13          2          2         99 
01-JAN-13          3          1         88 
11-NOV-13          4          1         90 

SQL Fiddle

new_data 来自此处的固定值,但可能来自另一个表,或者如果您将值传递到存储过程中,则可以作为单行。 merge 本身可以是独立的 SQL,也可以嵌入到 PL/SQL 块中。

如果new_data 字段dt(因为date 是保留字,并且是列的错误名称)和sec_id 匹配现有记录,则该记录将更新为新的versionvalue。如果没有匹配,则插入新记录。

【讨论】:

以上是关于oracle用sql 语句如何向表中插入时间?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 在表中插入

如何使用mysql语句向表中插入数据

如何用SQL语句向一个表中插入多行记录

如何用SQL语句向一个表中插入多行记录

如何向一个oracle表中快速插入很多条数据

oracle/sql中如何根据条件向表中插入数据