【问题标题】:Date formatting issue for sql format 'YYYY-MM-DD HH24:MI:SS.FF' to javasql 格式 'YYYY-MM-DD HH24:MI:SS.FF' 到 java 的日期格式问题
【发布时间】: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


【解决方案1】:

试试这个,

yy-M-d H:m:s.F

并且您的数据库列存储的值应该是“2018-4-24 8:1:30.114”

F 是一年中的第几天(例如:2 月 1 日 => F = 32,1 月 31 天 + 2 月 1 天)

【讨论】:

    【解决方案2】:

    您必须根据您的 sql 匹配相同的模式,只需尝试相同的模式即可进入 Java 我认为这会起作用,如果您需要更多信息,请发表评论

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS aa");
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多