使用Oracle insert语句在datetime中出错

问题描述 投票:0回答:1

我正在使用Oracle SQL Developer工具编写Oracle插入语句,因此:

INSERT INTO  ITEMAPPROVAL ( REQUESTITEMID,  USERID,  APPROVALSTATUS,  REQUESTSTATUSID,  ITEMAPPROVALDATE,  ITEMAPPROVALNOTE , APPROVEDAMOUNT)  
                VALUES   ('132568', '15', '1', '4', TO_DATE('06/02/1436:10:6i:41a6', 'mm/dd/yyyy:hh:mi:ssam'), '' ,'20000');

在运行总是我有以下错误

Error starting at line : 23 in command -
INSERT INTO  ITEMAPPROVAL ( REQUESTITEMID,  USERID,  APPROVALSTATUS,  REQUESTSTATUSID,  ITEMAPPROVALDATE,  ITEMAPPROVALNOTE , APPROVEDAMOUNT)  
                VALUES   ('132568', '15', '1', '4', TO_DATE('06/02/1436:10:6i:41am', 'mm/dd/yyyy:hh:mi:ssam'), '' ,'20000') 

    Error report -
        SQL Error: ORA-01861: literal does not match format string
        01861. 00000 -  "literal does not match format string"
        *Cause:    Literals in the input must be the same length as literals in
                   the format string (with the exception of leading whitespace).  If the
                   "FX" modifier has been toggled on, the literal must match exactly,
                   with no extra whitespace.
        *Action:   Correct the format string to match the literal.

我认为错误属于日期格式,我在网上搜索但没有任何希望。

更新:

从Visual Studio生成的查询就像那样

query = "INSERT INTO  ITEMAPPROVAL " +
                               "          ( REQUESTITEMID,  USERID,  APPROVALSTATUS,  REQUESTSTATUSID,  ITEMAPPROVALDATE,  ITEMAPPROVALNOTE , APPROVEDAMOUNT) " +
                               " VALUES   ('" + itemapproval.RequestItemID + "', '" + itemapproval.User.ID + "', '" + itemapproval.status + "', '" + itemapproval.requeststatus.ID + "', TO_DATE('" + itemapproval.date.ToString("mm/dd/yyyy:hh:mi:ssam") + "', 'mm/dd/yyyy:hh:mi:ssam'), '" + itemapproval.notes + "' ,'" + itemapproval.ApprovedAmount + "'); "
.net oracle oracle-sqldeveloper datetime-format
1个回答
1
投票

MI格式意味着分钟..希望你得到它作为月和我。我把它放在这里作为例如10。

与AM格式相同,表示am或pm。

INSERT INTO  ITEMAPPROVAL ( REQUESTITEMID,  USERID,  APPROVALSTATUS,  REQUESTSTATUSID,  ITEMAPPROVALDATE,  ITEMAPPROVALNOTE , APPROVEDAMOUNT)  
                VALUES   ('132568', '15', '1', '4', TO_DATE('06/02/1436:10:10:41am', 'mm/dd/yyyy:hh:mi:ssam'), '' ,'20000');

在.NET中尝试以下格式的String

mm/dd/yyyy:hh:mm:ss.tt

它会是这样的,

query = "INSERT INTO  ITEMAPPROVAL " +
                               "          ( REQUESTITEMID,  USERID,  APPROVALSTATUS,  REQUESTSTATUSID,  ITEMAPPROVALDATE,  ITEMAPPROVALNOTE , APPROVEDAMOUNT) " +
                               " VALUES   ('" + itemapproval.RequestItemID + "', '" + itemapproval.User.ID + "', '" + itemapproval.status + "', '" + itemapproval.requeststatus.ID + "', TO_DATE('" + itemapproval.date.ToString("mm/dd/yyyy:hh:mi:ssam") + "', 'mm/dd/yyyy:hh:mm:sstt'), '" + itemapproval.notes + "' ,'" + itemapproval.ApprovedAmount + "'); "

.NET reference on Date formats

© www.soinside.com 2019 - 2024. All rights reserved.