【发布时间】:2017-01-10 14:21:35
【问题描述】:
我同时使用 Mongo 和 Oracle 12c。
对于 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 中对具有相同名称的列使用 Timestamp 格式类型,因此想法是将日期转换为时间戳。
我不知道该怎么做。我有以下代码,但它不起作用。
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 literal no contrast con la cadena de formato
有什么问题?
【问题讨论】:
-
Like this in Oracle;但是标题说你想用 Java 来做,那么你真正的意思是什么?另外,该列是什么数据类型,您是否打算将 UTC 值转换为本地时间?如果它是一个日期并且您不想调整它,您可以使用与
to_date()相同的格式掩码,但这并不完全正确。 -
getFieldFromJson方法中的代码是如何设置的?您是否使用 Mongo java 驱动程序来处理映射?您也应该尝试将日期存储为 mongo db 中的日期类型。所以你不必转换,你可以从 MongoDB 中读取并将其保存到 oracle。
标签: java oracle mongodb timestamp isodate