【问题标题】:How to insert multiple records into Oracle with same timestamp如何将具有相同时间戳的多条记录插入Oracle
【发布时间】:2017-03-08 12:55:55
【问题描述】:

我的问题有些不同。

这里的人要求插入日期和时间,但我的问题是如何只插入日期 DD-MM-YYYY ?我不需要时间插入。由于毫秒的差异,我得到了例外。所以我想避免这种情况。

oracle中的sysdate,current_time关键字插入日期和时间。

要求就像我必须插入 1000 行,其中每行的时间戳(我不想要一个毫秒的差异)应该是相同的。

【问题讨论】:

  • 那你为什么用 MySQL 标记它?
  • 还需要了解 MySQL...
  • “你试过什么?”
  • 由于您的要求实际上是如何将具有相同时间戳的多条记录插入到 Oracle 中,您可能应该在该范围内重新命名此问题(以便其他有相同问题的用户会发现此问题)。

标签: sql oracle date


【解决方案1】:

在 Oracle 中,使用时间为“00:00:00”的日期,例如:trunc(sysdate)。 没有仅日期类型(没有时间)。

【讨论】:

    【解决方案2】:

    所以你只想插入很多具有相同时间戳的记录?

    首先,以下是不起作用

    CREATE TABLE test_table (tstamp TIMESTAMP);
    
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    INSERT INTO test_table VALUES (systimestamp);
    
    SELECT tstamp FROM test_table;
    
    TSTAMP
    ----------------------------
    06-JUN-14 12.24.28.659493 PM
    06-JUN-14 12.24.28.663258 PM
    06-JUN-14 12.24.28.666936 PM
    06-JUN-14 12.24.28.671949 PM
    06-JUN-14 12.24.28.676808 PM
    06-JUN-14 12.24.28.680507 PM
    06-JUN-14 12.24.28.684501 PM
    06-JUN-14 12.24.28.688620 PM
    06-JUN-14 12.24.28.694491 PM
    06-JUN-14 12.24.28.698288 PM
    

    解决方案,在 PL/SQL 块中执行 INSERT。首先获取systimestamp并将其存储在一个变量中,例如v_right_now。然后,您可以让所有记录具有完全相同的日期/时间。

    DECLARE
      v_right_now TIMESTAMP := systimestamp;
    BEGIN
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
      INSERT INTO test_table VALUES (v_right_now);
    END;
    /
    
    SELECT tstamp FROM test_table;
    
    TSTAMP
    ----------------------------
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    06-JUN-14 12.24.48.263444 PM
    

    【讨论】:

      【解决方案3】:

      试试这个:

      select to_date(sysdate,'DD/MM/YY') FROM DUAL
      

      或者:

      select to_date(column_name,'DD/MM/YYYY') FROM TABLE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-16
        • 2021-11-12
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        相关资源
        最近更新 更多