【发布时间】:2021-11-27 04:44:40
【问题描述】:
我想将 ZonedDateTime 存储在 oracle 中的 TIMESTAMP WITH TIME ZONE 数据类型中。 如果我尝试将字符串直接存储为字符串,则会抛出无效月份。 然后我发现我可以将它转换为java中的TIMESTAMPTZ然后存储,因为我们需要将字符串转换为TIMESTAMPTZ及其抛出错误。
String d = "2021-10-28 02:36:08.000000 +02:00";
TIMESTAMPTZ t = new TIMESTAMPTZ(con, d);
PreparedStatement ps = con.prepareStatement(query);
ps.setObject(1,t);
错误/堆栈跟踪:
Exception in thread "main" java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] at java.sql.Timestamp.valueOf(Timestamp.java:251) at oracle.sql.TIMESTAMPTZ.toBytes(TIMESTAMPTZ.java:1919) at oracle.sql.TIMESTAMPTZ.<init>(TIMESTAMPTZ.java:253) at OracleSelectQuery.main(OracleSelectQuery.java:21)
请有人调查一下。
【问题讨论】:
-
your previous question 之后,我很想问您是只想保存 UTC 偏移量 (+02:00) 还是需要保存时区(例如欧洲/巴黎)?
标签: java datetime timestamp timestamp-with-timezone zoneddatetime