【发布时间】:2018-04-24 08:51:14
【问题描述】:
在我的 sql 查询中,我的日期格式为:
to_char(crtd_ts,'YYYY-MM-DD HH24:MI:SS.FF') crtd
我的数据库列将值存储为2018-4-24.8.1. 30. 404577000
在 Java 中做同样事情的方法是什么? 我尝试过这种方式,但出现错误。
private String formatDate(String refCrtdTs) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd HH24:mm:ss.ff");
String dateInString = refCrtdTs;
try {
Date date = sdf.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
我正在尝试用休眠条件替换上面的 sql 查询。我的列的休眠实体定义为
@Column(name="REF_CRTD_TS",columnDefinition="timestamp")
private String refCrtdTs;
Oracle 中的列类型为Timestamp。
所以休眠条件将这个值作为我现在要格式化的字符串返回给我。
【问题讨论】:
-
DATE列不具有“格式”。使用ResultSet.getTimestamp()从数据库中读取值然后您不需要解析或格式化任何内容,不要将日期或时间戳值读取和写入字符串 -
错误是什么?
-
正如@a_horse_with_no_name 提到的那样,从您的问题看来,列的类型已经是 datetime,您在查询数据库时将其转换为字符串,然后输出字符串通过 java 中的类似函数传递将其转换为 Date 对象。为什么要进行 2 次转换?
-
我将上面的 sql 查询替换为休眠条件。更新了我的问题
标签: java sql hibernate timestamp datetime-format