【问题标题】:Convert SQL DateTime to Java将 SQL 日期时间转换为 Java
【发布时间】:2012-02-14 12:53:03
【问题描述】:

我的数据库中有一个字段将日期保存为 DateTime。我希望将其格式更改为 dd-MM-yyyy。这是我目前的 Java/JSP 代码,但它返回异常:

DateFormat formatter ;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = (Date) formatter.parse(rs.getString("play_date")); //rs -> ResultSet
//print date...

获取日期的最佳方法是什么?

【问题讨论】:

  • mysql 的日期/时间格式是YYYY-MM-DD hh:mm:ss,而不是dd-MMM-yy。
  • 使用 JodaTime 库而不是 Java 的蹩脚的内置日期/时间函数,你不会有任何麻烦。
  • 您是想以 dd-MM-yyyy 格式打印还是更改它存储在数据库中的格式?
  • 刚刚做了@Jon Skeet、Webuser 和 Anubhava 的操作,它工作正常。如何更改日期的格式,例如显示时间等?
  • 要显示时间,请使用稍微不同的 SimpleDateFormat,例如:DateFormat formatter = new SimpleDateFormat("dd-MM-yy HH:mm:ss");

标签: java mysql jsp datetime


【解决方案1】:

而不是:rs.getString("play_date") 你应该这样做:

rs.getDate("play_date")

因为您的列 play_date 在您的数据库中属于 DATE_TIME。也不需要进行任何解析。可以使用DateFormat#format(date)直接以dd-MM-yyyy格式显示时间

【讨论】:

    【解决方案2】:

    只要列时间为DATETIME,并且您的SQL 检索该列的值而不显式将它们转换为字符串,您就可以使用ResultSet 的getDate(String) 方法。

    date = rs.getDate("play_date");
    

    【讨论】:

      【解决方案3】:

      如果您的数据库将该值作为日期/时间字段,则根本不应该执行任何字符串转换。只需使用ResultSet.getDate 而不是getString - 您几乎应该始终避免不必要的转换;它们是灾难的根源。

      毕竟,数据固有并没有单一的文本表示 - 当你可以得到数据的自然表示?

      当您向数据库提供数据时也是如此(作为更新/插入或查询参数) - 使用参数值来避免将值转换为字符串(同时也避免 SQL 注入对于已经是字符串的值)。

      【讨论】:

        【解决方案4】:

        我认为你犯了一个错误

        formatter = new SimpleDateFormat("dd-MMM-yy");
        

        应该是这样的

        formatter = new SimpleDateFormat("dd-MM-yy");
        

        只有 2 个 M。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-16
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多