<分区>
提前为这个有点宽泛的问题道歉。
使用以下格式处理日期和时间最合适的 MySQL 和 Java 数据类型是什么:yyyy.MM.dd hh:mm:ss
我需要能够将日期和时间的字符串表示形式转换为给定的日期格式,然后将该日期和时间存储在数据库中。然后我需要执行相反的操作,将 MySQL 日期和时间转换为相应的 Java 表示
我已经阅读了很多关于 Date、DateTime、ZonedDateTime 的问题,但这些问题似乎都不太奏效。
谢谢。
<分区>
提前为这个有点宽泛的问题道歉。
使用以下格式处理日期和时间最合适的 MySQL 和 Java 数据类型是什么:yyyy.MM.dd hh:mm:ss
我需要能够将日期和时间的字符串表示形式转换为给定的日期格式,然后将该日期和时间存储在数据库中。然后我需要执行相反的操作,将 MySQL 日期和时间转换为相应的 Java 表示
我已经阅读了很多关于 Date、DateTime、ZonedDateTime 的问题,但这些问题似乎都不太奏效。
谢谢。
最佳答案
在您的情况下,mysql 类型将是 DATETIME
,而 Java 8 类型将是 LocalDateTime
。
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy.MM.dd hh:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateAsString, fmt);
String dateAsString = dateTime.format(fmt);
如果驱动兼容JDBC 4.2(最新版本的mysql Java连接器应该是兼容的),你可以这样做:
LocalDateTime dateTime = rs.getObject(1, LocalDateTime.class);
preparedStatement.setObject(1, dateTime);
如果您的驱动程序还不兼容,您可以像在 Java 8 之前那样将 DATETIME
字段存储/检索为 java.sql.Timestamp
。
然后您可以使用以下方法与 LocalDateTime
相互转换:
//from LocalDateTime to Timestamp:
java.time.LocalDateTime dateTime = LocalDateTime.parse(dateAsString, fmt);
java.sql.Timestamp ts = Timestamp.valueOf(dateTime);
//from Timestamp to LocalDateTime:
java.sql.Timestamp ts = resultSet.getTimestamp();
java.time.LocalDateTime dateTime = ts.toLocalDateTime();
关于java - 最适合存储日期和时间的 SQL 和 Java 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40150175/