我在同一时间使用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