在MySQL中,时间类型DATETIME、DATE、TIME、TIMESTAMP转化到Java中
时间: 2023-07-10 20:36:50 浏览: 170
解析MySql与Java的时间类型
在MySQL中,时间类型有四种,分别是DATETIME、DATE、TIME、TIMESTAMP,这些类型在Java中的转换方式如下:
1. DATETIME类型
在Java中,可以使用java.time.LocalDateTime类来表示DATETIME类型。在通过JDBC从MySQL中读取DATETIME类型的值时,可以使用ResultSet类的getTimestamp方法获取java.sql.Timestamp类型的值,然后再将其转换为java.time.LocalDateTime类型:
```java
ResultSet rs = stmt.executeQuery("SELECT datetime_column FROM table");
while (rs.next()) {
Timestamp timestamp = rs.getTimestamp("datetime_column");
LocalDateTime datetime = timestamp.toLocalDateTime();
// ...
}
```
在将java.time.LocalDateTime类型的值写入到MySQL的DATETIME类型的字段时,可以使用PreparedStatement类的setTimestamp方法:
```java
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (datetime_column) VALUES (?)");
LocalDateTime datetime = LocalDateTime.now();
Timestamp timestamp = Timestamp.valueOf(datetime);
pstmt.setTimestamp(1, timestamp);
pstmt.executeUpdate();
```
2. DATE类型
在Java中,可以使用java.time.LocalDate类来表示DATE类型。在通过JDBC从MySQL中读取DATE类型的值时,可以使用ResultSet类的getDate方法获取java.sql.Date类型的值,然后再将其转换为java.time.LocalDate类型:
```java
ResultSet rs = stmt.executeQuery("SELECT date_column FROM table");
while (rs.next()) {
Date date = rs.getDate("date_column");
LocalDate localDate = date.toLocalDate();
// ...
}
```
在将java.time.LocalDate类型的值写入到MySQL的DATE类型的字段时,可以使用PreparedStatement类的setDate方法:
```java
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (date_column) VALUES (?)");
LocalDate localDate = LocalDate.now();
Date date = Date.valueOf(localDate);
pstmt.setDate(1, date);
pstmt.executeUpdate();
```
3. TIME类型
在Java中,可以使用java.time.LocalTime类来表示TIME类型。在通过JDBC从MySQL中读取TIME类型的值时,可以使用ResultSet类的getTime方法获取java.sql.Time类型的值,然后再将其转换为java.time.LocalTime类型:
```java
ResultSet rs = stmt.executeQuery("SELECT time_column FROM table");
while (rs.next()) {
Time time = rs.getTime("time_column");
LocalTime localTime = time.toLocalTime();
// ...
}
```
在将java.time.LocalTime类型的值写入到MySQL的TIME类型的字段时,可以使用PreparedStatement类的setTime方法:
```java
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (time_column) VALUES (?)");
LocalTime localTime = LocalTime.now();
Time time = Time.valueOf(localTime);
pstmt.setTime(1, time);
pstmt.executeUpdate();
```
4. TIMESTAMP类型
在Java中,可以使用java.time.LocalDateTime类来表示TIMESTAMP类型。在通过JDBC从MySQL中读取TIMESTAMP类型的值时,可以使用ResultSet类的getTimestamp方法获取java.sql.Timestamp类型的值,然后再将其转换为java.time.LocalDateTime类型:
```java
ResultSet rs = stmt.executeQuery("SELECT timestamp_column FROM table");
while (rs.next()) {
Timestamp timestamp = rs.getTimestamp("timestamp_column");
LocalDateTime datetime = timestamp.toLocalDateTime();
// ...
}
```
在将java.time.LocalDateTime类型的值写入到MySQL的TIMESTAMP类型的字段时,可以使用PreparedStatement类的setTimestamp方法:
```java
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (timestamp_column) VALUES (?)");
LocalDateTime datetime = LocalDateTime.now();
Timestamp timestamp = Timestamp.valueOf(datetime);
pstmt.setTimestamp(1, timestamp);
pstmt.executeUpdate();
```
阅读全文