【问题标题】:How to insert date values into table如何将日期值插入表中
【发布时间】:2016-03-23 15:24:13
【问题描述】:

如何使用 日期数据类型使用 / 插入具有不同输入的表?

insert into run(id,name,dob)values(&id,'&name',[what should I write here?]);

我正在使用 oracle 10g。

【问题讨论】:

  • 您能否发布一些您希望插入的输入示例以进行更多说明?
  • 身份证姓名出生日期 1 abc 19.12.2008 2 def 20.12.2009

标签: sql oracle datetime oracle10g date-formatting


【解决方案1】:

由于dobDATE 数据类型,您需要使用TO_DATE 和正确的格式模型将literal 转换为DATE。语法是:

TO_DATE('<date_literal>', '<format_model>')

例如,

SQL> CREATE TABLE t(dob DATE);

Table created.

SQL> INSERT INTO t(dob) VALUES(TO_DATE('17/12/2015', 'DD/MM/YYYY'));

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM t;

DOB
----------
17/12/2015

DATE 数据类型同时包含日期和时间元素。如果您不关心时间部分,那么您也可以使用使用固定格式'YYYY-MM-DD' 并且独立于 NLS 的 ANSI 日期文字。

例如,

SQL> INSERT INTO t(dob) VALUES(DATE '2015-12-17');

1 row created.

【讨论】:

    【解决方案2】:

    日期必须插入两个撇号' 例如,如果日期是 2018/10/20。它可以从这些查询中插入

    查询 -

    insert into run(id,name,dob)values(&id,'&name','2018-10-20')
    

    【讨论】:

    • 不,这是不正确的。在 Oracle 中,'2018-10-20' 是一个字符串,而不是日期。您必须使用带有适当格式掩码的TO_DATE 或使用使用固定格式DATE 'YYYY-MM-DD'ANSI date literal 将字符串显式转换为日期。
    【解决方案3】:

    假设我们使用 SQl 服务器管理工​​作室创建一个表 Transactions

    txn_id int,
    
    txn_type_id varchar(200),
    
    Account_id int,
    
    Amount int,
    
    tDate date
    
    );
    

    使用 date 数据类型,我们可以插入简单格式的值:'yyyy-mm-dd'

    INSERT INTO transactions (txn_id,txn_type_id,Account_id,Amount,tDate)
    VALUES (978, 'DBT', 103, 100, '2004-01-22');
    

    此外,我们可以有不同的时间格式,例如

    DATE - format YYYY-MM-DD
    DATETIME - format: YYYY-MM-DD HH:MI:SS
    SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS 
    

    【讨论】:

      【解决方案4】:

      插入run(id,name,dob)values(&id,'&name',[我应该写什么 在这里?]);

      insert into run(id,name,dob)values(&id,'&name',TO_DATE('&dob','YYYY-MM-DD'));
      

      【讨论】:

        【解决方案5】:

        你也可以在只需要“dd-mm-yyyy”的地方使用“timestamp”数据类型

        喜欢:

        insert into emp values('12-12-2012');
        

        考虑到表格中只有一列... 您可以根据您的表格调整插入值。

        【讨论】:

          【解决方案6】:

          我只是编写了一个嵌入式 SQL 程序来编写带有日期字段的新记录。 它是迄今为止最好和最短的,没有任何错误,我能够达到我的要求。

          w_dob = %char(%date(*date));      
          exec sql insert into Tablename (ID_Number     , 
                                       AmendmentNo   , 
                                       OverrideDate  , 
                                       Operator      , 
                                       Text_ID       , 
                                       Policy_Company, 
                                       Policy_Number , 
                                       Override      , 
                                       CREATE_USER   ) 
                          values ( '801010',    
                                      1,            
                                     :w_dob,      
                                     'MYUSER',     
                                      ' ',         
                                      '01',        
                                      '6535435023150', 
                                      '1',         
                                      'myuser');    

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-07-29
            • 1970-01-01
            • 2012-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-19
            • 2020-08-24
            相关资源
            最近更新 更多