2015-08-28 150 views
0

我試圖通過使用以下代碼中插入所述時間戳(6)的數據類型值向表:在Oracle時間戳列插入時間戳

INSERT INTO TOY_STORE (TOY_STORE_ID,TOY_STORE_NAME,CITY,PHONENUMBER,STORE_OPENING_TIME,STORE_CLOSING_TIME) 
    VALUES(1,'Kid''s Cave','Delhi',9912312312,'2014-04-01 09:10:12','2014-04-01 21:42:05'); 

但它給被錯誤 SQL錯誤:ORA-01843 :不是有效的月份 01843. 00000 - 「不是有效的月」 *原因:
*操作: 有人可以糾正我的代碼

回答

2

甲骨文有日期非標準格式。您可以使用該格式(DD/MMM/YYYY),使用to_date()函數或DATE/TIMESTAMP運算符。我認爲這會工作:

INSERT INTO TOY_STORE (TOY_STORE_ID,T OY_STORE_NAME, CITY,PHONENUMBER, 
         STORE_OPENING_TIME, STORE_CLOSING_TIME) 
    VALUES(1, 'Kid''s Cave',' Delhi', 9912312312, 
      TIMESTAMP '2014-04-01 09:10:12', TIMESTAMP '2014-04-01 21:42:05'); 
+1

的「* DATE/TIMESTAMP符*」其實是標準的ANSI SQL寫的日期/時間戳文字(以及我的首選方式)。 Oracle的日期格式不是「非標準的」,因爲寫入日期/時間戳記文字的其他方式也是非標準的,並且需要隱式數據類型轉換(取決於客戶端的區域設置) –

+0

@a_horse_with_no_name。 。 。雖然你是對的,但我認爲ISO標準格式應該在任何地方被接受 - 並且大部分數據庫都能識別它們。 –

0

您也可以爲您做您的插入之前,執行以下命令:

ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'yyyy-mm-dd hh24:mi:ss';