我需要将XMLGregorianCalendar转换为Oracle Timestampformat
我的数据库数据类型是时间戳格式。
尝试使用Java执行查询。
答案 0 :(得分:1)
默认情况下,XMLGregorianCalendar#toString()
方法以ISO 8601
格式返回日期字符串" YYYY-MM-DDThh:mm:ssTZD",例如:" 2014-12 -10T12:49:28-08:00",' T'作为时间的分界符。一个捷径黑客就是取代' T'有空间,但在我看来,这不是一个更好的选择。
由于您需要的日期字符串格式与Oracle的TO_TIMESTAMP()
函数兼容,如下所示:" YYYY-MM-DD HH24:MI:SS.FF3&#34 ;,您可以通过传入毫秒来将其转换为java.sql.Timestamp。
XMLGregorianCalendar now = new XMLGregorianCalendar();
GregorianCalendar calenderNow = now.toGregorianCalendar();
Timestamp createOnTimestamp = new Timestamp(calenderNow.getTimeInMillis()));
如果您需要将时间戳作为格式化字符串传递给预准备语句,则可以执行以下操作:
String createdOnString = createOnTimestamp.toString();
//returns yyyy-MM-dd HH:mm:ss.SSS
或者如果您想要使用特定格式:
String createdOnString = new SimpleDateFormat("yourformat").format(createOnTimestamp);
*注意:您可以通过运行以下查询来查看Oracle的默认时间戳格式:
SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_TIMESTAMP_FORMAT';