我在同一時間使用Mongo和Oracle 12c。如何在ISO或SQL中將ISO DATE轉換爲時間戳?
對於MongoDB我使用ISO DATE
(但像字符串)來保存日期。就像這樣:
{
"_id" : null,
"fields" : {
"Status" : "UnderInvestigation",
"Assignee" : "",
"CreationDate" : "2016-12-14T00:00:00Z", //ISO DATE
"CaseId" : "8165021",
"RunningMode" : "STS",
"CloserDueDate" : ""
},
"domain" : {},
"arrays" : {}
}
我想在Oracle中使用時間戳格式類型具有相同名稱的列,這樣的想法是變換日期戳記。
我不知道該怎麼做。我有以下代碼,但它不起作用。
final String query = "INSERT INTO " + TABLE_APPLICATION + " (CreationDate) VALUES (TO_DATE(?,'YYYY-MM-DD HH24:MI:SS'))" ;
PreparedStatement ps = getPreparedStatement();
((OraclePreparedStatement) ps).setString(1, getValueFromJson(JSON, 'fields.CreationDate'));
但我得到:
java.sql.SQLDataException:ORA-01861:EL文字不相吻合CON LA卡德納德formato
什麼問題?
[在Oracle中一樣](http://stackoverflow.com/a/28211019/266304);但標題說你想用Java來做,所以你真的認爲這是什麼意思?此外,列的數據類型是什麼,您是否打算將UTC值轉換爲本地時間?如果這是一個日期並且您不想調整它,那麼可以使用'to_date()'使用相同的格式掩碼,但這不是嚴格正確的。 –
getFieldFromJson方法中的代碼如何設置?你使用Mongo java驅動來處理映射嗎?您應該嘗試將日期作爲日期類型存儲在mongo db中。所以你不必轉換,你可以從MongoDB中讀取並保存到oracle。 – Veeram