2016-06-07 57 views
-1

任何幫助球員我有錯誤列不允許在這裏爲日期時間!插入聲明錯誤,ORA-00984:列不允許在這裏

INSERT INTO MEMBERS_CONTRIBUTIONS (
    CONTRIBUTION_TYPE, 
    FROM_DATE, 
    TO_DATE, 
    ADDED_PERIOD_IN_MONTHS, 
    MEMBER_AMOUNT, 
    THE_CURRENCY, 
    MATURITY_DATE 
) VALUES (
    4, 
    convert(datetime, '6/1/2016 12:00:00 AM', 5), 
    convert(datetime, '6/1/2016 12:00:00 AM', 5), 
    0, 
    2500, 
    'OMR', 
    convert(datetime, '6/30/2016 12:00:00 AM', 5) 
); 
+0

你想用'CONVERT'做什麼?在oracle中,它用於將字符串從一個字符集轉換爲另一個字符集。 – Noel

+0

我想插入完整格式的日期dd/mm/yyyy ss:mm:hh – ghalib

+1

查看to_date函數 – evilive

回答

2

您要使用Oracle中的SQL Server CONVERT() function - 的Oracle CONVERT() function轉換從一個字符集到另一個,你想要什麼沒有做。

相反,你可以使用文字日期:

INSERT INTO MEMBERS_CONTRIBUTIONS (
    CONTRIBUTION_TYPE, 
    FROM_DATE, 
    TO_DATE, 
    ADDED_PERIOD_IN_MONTHS, 
    MEMBER_AMOUNT, 
    THE_CURRENCY, 
    MATURITY_DATE 
) VALUES (
    4, 
    DATE '2016-06-01', 
    DATE '2016-06-01', 
    0, 
    2500, 
    'OMR', 
    DATE '2016-06-30' 
); 

在Oracle中,所有DATE類型既有日期和時間組成部分 - 日期文字語法將剛剛成立的時候組件00:00:00(或12:00:00 AM在一個12小時的時鐘)。

或者,如果你想指定的時間成分,那麼你可以使用時間戳文字(甲骨文將隱式轉換爲DATE類型如果是這樣的列的你在其存儲類型):

INSERT INTO MEMBERS_CONTRIBUTIONS (
    CONTRIBUTION_TYPE, 
    FROM_DATE, 
    TO_DATE, 
    ADDED_PERIOD_IN_MONTHS, 
    MEMBER_AMOUNT, 
    THE_CURRENCY, 
    MATURITY_DATE 
) VALUES (
    4, 
    TIMESTAMP '2016-06-01 00:00:00', 
    TIMESTAMP '2016-06-01 00:00:00', 
    0, 
    2500, 
    'OMR', 
    TIMESTAMP '2016-06-30 00:00:00' 
); 

或者你可以使用TO_DATE()功能顯式轉換一個字符串到日期:

INSERT INTO MEMBERS_CONTRIBUTIONS (
    CONTRIBUTION_TYPE, 
    FROM_DATE, 
    TO_DATE, 
    ADDED_PERIOD_IN_MONTHS, 
    MEMBER_AMOUNT, 
    THE_CURRENCY, 
    MATURITY_DATE 
) VALUES (
    4, 
    TO_DATE('6/1/2016 12:00:00 AM', 'MM/DD/YYYY HH12:MI:SS AM'), 
    TO_DATE('6/1/2016 12:00:00 AM', 'MM/DD/YYYY HH12:MI:SS AM'), 
    0, 
    2500, 
    'OMR', 
    TO_DATE('6/30/2016 12:00:00 AM', 'MM/DD/YYYY HH12:MI:SS AM') 
); 
0

表達convert(datetime, '6/1/2016 12:00:00 AM', 5)呼籲名爲datetime列。但是,您的插入語句根本不提供涉及任何列的上下文,因此查詢解析器無法對datetime做任何意義。因此你的ORA-00948錯誤。

我想你想把一個日期/時間常數,從你的例子可能意味着2016年6月1日或2016年1月6日,到date數據類型。您需要使用TO_DATE()函數將字符串轉換爲該格式。我不打算建議一個特定的調用形式,因爲我不知道你的字符串是如何格式化的。

相關問題