最近在使用 libzdb封装的 oracle 数据库连接池,在操作数据库时,总是时间格式错误,请走过路过的各位大神给个解决办法,不胜感激!
Connection_T con = TradeService::ms_pInstance->m_pConnPool->GetConnection();
PreparedStatement_T p = Connection_prepareStatement(con,
"INSERT INTO TRADE_HIS(DEV_SN,COMPONENT_TYPE,MOD_MODEL_ID"
",MOD_SEQ_NUMBER,TRADE_TYPE_ID,TRADE_CONTENT,TRADE_TIME)"
" VALUES(?,?,?,?,?,?,?)");
PreparedStatement_setString(p, 1, "");
PreparedStatement_setInt(p, 2, 2);
PreparedStatement_setInt(p, 3, NULL);
PreparedStatement_setInt(p, 4, 2);
PreparedStatement_setInt(p, 5, 20175);
PreparedStatement_setString(p, 6, "维护任务单和设备编号不一致");
QString str = QString("to_timestamp('%1','yyyy-mm-dd hh24:mi:ss')")
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
QByteArray ba = str.toLatin1();
const char* c_str = ba.data();
PreparedStatement_setString(p, 7,c_str);
if(TradeService::ms_pInstance->m_pConnPool->Insert(p, con) > 0)
{
logger()->info("信息表更新");
}
else
{
logger()->warn("更新信息表失败,将不处理该明细数据");
return;
}
以下为打印的数据库错误:
当然数据库格式问题,也考虑了,总是改不过来。
数据库时间字段定义类型为:TIMESTAMP(6)
单独在数据库中执行只有这种格式:
TO_TIMESTAMP('05-8月 -13 06.17.24.128000000 下午', 'DD-MON-RR HH.MI.SS.FF AM')
可以成功插入;
有做过相关方面的大神,恳请赏个解决方案!