用于存储日期和时间的最合适的SQL和Java数据类型

时间:2016-10-20 09:13:07

标签: java mysql date time java-8

为这个有点广泛的问题提前道歉。

使用以下格式处理日期和时间的最合适的MySQL和Java数据类型是什么:yyyy.MM.dd hh:mm:ss

我需要能够转换日期和时间的字符串表示形式。到达给定日期格式的时间,然后将该日期和时间存储在数据库中。然后,我需要反向并转换MySQL日期&时间进入相应的Java表示

我已经阅读了很多关于Date,DateTime,ZonedDateTime的问题,但这些似乎都没有。

感谢。

3 个答案:

答案 0 :(得分:6)

在您的情况下,mysql类型为 final double ratio_dB = txPower - rssi; final double ratio_linear = Math.pow(10, (ratio_dB / 10)); final double r = Math.sqrt(ratio_linear); ,Java 8类型为DATETIME

String和LocalDateTime之间的转换

LocalDateTime

与数据库的交互(符合JDBC 4.2的驱动程序)

如果驱动程序符合JDBC 4.2(最新版本的mysql Java连接器应该符合要求),您可以这样做:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy.MM.dd hh:mm:ss");

LocalDateTime dateTime = LocalDateTime.parse(dateAsString, fmt);
String dateAsString = dateTime.format(fmt);

不合规的驱动程序

如果您的驱动程序尚未兼容,您将像{8}之前那样以LocalDateTime dateTime = rs.getObject(1, LocalDateTime.class); preparedStatement.setObject(1, dateTime); 存储/检索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();

答案 1 :(得分:1)

使用以下格式处理日期和时间的最合适的MySQL和Java数据类型是什么:yyyy.MM.dd hh:mm:ss

最合适的MySQL类型是DATETIME。请参阅Should I use field 'datetime' or 'timestamp'?

在持久层(jdbc类型)中使用的相应Java类型是java.sql.Timestamp。请参阅Java, JDBC and MySQL Types

我需要能够转换日期和时间的字符串表示形式。到达给定日期格式的时间,然后将该日期和时间存储在数据库中。

正确的转换是:java.lang.String -> java.util.Date -> java.sql.Timestamp

  • java.lang.String -> java.util.Date

Date javaDatetime = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss").parse(stringDatetime);

  • java.util.Date -> java.sql.Timestamp

Timestamp jdbcDatetime = new Timestamp(javaDatetime.getTime());

然后我需要反向并转换MySQL日期&时间进入相应的Java表示

做反向路径:

  • java.sql.Timestamp -> java.util.Date

Date javaDatetime = new java.util.Date(jdbcDatetime.getTime());

  • java.lang.Date -> java.util.String

String stringDatetime = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss").format(javaDatetime);

我一直很简洁。您必须注意SimpleDateFormat的使用(例如,缓存已使用applyPattern和setLenient初始化的实例)。

答案 2 :(得分:0)

您可以通过以下方式格式化代码:

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dateUtil = DATE_FORMAT.parse(dateEcheance);
java.sql.Date dateSql = new java.sql.Date(dateUtil.getTime());

我希望你会帮助你。