【问题标题】:Mapping Date and Time to MySQL将日期和时间映射到 MySQL
【发布时间】:2014-06-08 16:43:03
【问题描述】:

我在MySQL 中创建了一个表格:

CREATE TABLE scheduled(sid INT,id INT,tweet VARCHAR(255),sdate DATE, 
          stime TIME,PRIMARY KEY(sid),FOREIGN KEY(id) REFERENCES usercred(id));

我从 HTML 输入字段中同时收到 DateTime。从 HTML 字段收到的日期如下所示:

4/30/2014

如何在 Java 中映射它?在收到DateTime 并正确映射后,我将提交事务或更新表/条目。

【问题讨论】:

    标签: java mysql hibernate date time


    【解决方案1】:

    PreparedStatementResultSet 内的JDBC 层中,您使用映射java.sql.Date(用于SQL-DATE)和java.sql.Time(用于SQL-TIME)。然后你可以包装这两种类型:

    java.sql.Date sqlDate = ...; // from ResultSet
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); // or M/d/yyyy
    String htmlFormat = df.format(sqlDate);
    

    反过来:

    String htmlFormat = ...;
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); // or M/d/yyyy
    java.util.Date d = df.parse(htmlFormat);
    java.sql.Date sqlDate = new java.sql.Date(d.getTime());
    // use result in PreparedStatement for INSERT or UPDATE
    

    注意:两种方法都使用运行此代码的服务器的标准时区。如有疑问,您可能应该设置时区 UTC。时间部分的类似代码。

    【讨论】:

    • 你能解释一下parse方法吗
    • @saplingPro 类SimpleDateFormat 使用模式表达式将字符串输入解释为java.util.Date 类型的对象。您可以通过设置时区或宽大处理来影响此解析。另请参阅documentation。请注意,还有更好的库可用,但这是自 Java 1 以来非常基本的东西。
    【解决方案2】:

    可以在 SimpleDateFormat 对象中使用 parse() 方法:

    SimpleDateFormat sdf = new SimpleDateFormat("M-dd-yyyy");
    String dateInString = "4-30-1982"";     
    Date date = sdf.parse(dateInString);
    System.out.println(date);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-30
      • 2016-05-10
      • 2012-04-09
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      相关资源
      最近更新 更多