java.sql.Timestamp的使用

本文介绍了一个与java.util.Date类相关的包装器——Timestamp,它是Model中用于定义事件类型的类,并且与数据库的date数据相对应。Timestamp允许JDBCAPI将其标识为SQLTIMESTAMP值,支持保存SQLTIMESTAMP毫微秒值,并提供了格式化和解析时间戳值的JDBC转义语法。
class Timestamp extends java.util.Date
在Model中定义Timestamp的事件类型,与数据库的date数据对应
显示效果如下:10-12-13 19:02:38.000
一个与 java.util.Date 类有关的包装器,它允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。
它添加保存 SQL TIMESTAMP 毫微秒值和提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。 Timestampjava.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。 
`java.sql.Timestamp` 类是 `java.util.Date` 的一个子类,它带有纳秒级精度,通常用于与数据库中的时间戳字段进行交互。以下是一些常见的使用方法: ### 1. 创建 `Timestamp` 对象 可以使用构造函数或 `valueOf` 方法来创建 `Timestamp` 对象。 ```java import java.sql.Timestamp; import java.util.Date; public class TimestampExample { public static void main(String[] args) { // 使用当前时间创建 Timestamp 对象 Timestamp timestamp1 = new Timestamp(System.currentTimeMillis()); System.out.println("使用当前时间创建的 Timestamp: " + timestamp1); // 使用 Date 对象创建 Timestamp 对象 Date date = new Date(); Timestamp timestamp2 = new Timestamp(date.getTime()); System.out.println("使用 Date 对象创建的 Timestamp: " + timestamp2); // 使用字符串创建 Timestamp 对象 Timestamp timestamp3 = Timestamp.valueOf("2024-01-01 12:00:00"); System.out.println("使用字符串创建的 Timestamp: " + timestamp3); } } ``` ### 2. 获取和设置纳秒 `Timestamp` 类提供了获取和设置纳秒的方法。 ```java import java.sql.Timestamp; public class TimestampNanosExample { public static void main(String[] args) { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); // 获取纳秒 int nanos = timestamp.getNanos(); System.out.println("当前 Timestamp 的纳秒部分: " + nanos); // 设置纳秒 timestamp.setNanos(500000000); System.out.println("设置纳秒后的 Timestamp: " + timestamp); } } ``` ### 3. 与 `java.util.Date` 相互转换 `Timestamp` 是 `Date` 的子类,可以直接转换为 `Date` 对象;也可以从 `Date` 对象创建 `Timestamp` 对象。 ```java import java.sql.Timestamp; import java.util.Date; public class TimestampDateConversion { public static void main(String[] args) { // Timestamp 转换为 Date Timestamp timestamp = new Timestamp(System.currentTimeMillis()); Date date = timestamp; System.out.println("Timestamp 转换为 Date: " + date); // Date 转换为 Timestamp Date newDate = new Date(); Timestamp newTimestamp = new Timestamp(newDate.getTime()); System.out.println("Date 转换为 Timestamp: " + newTimestamp); } } ``` ### 4. 格式化输出 可以使用 `SimpleDateFormat` 或 `DateTimeFormatter` 来格式化 `Timestamp` 对象。 ```java import java.sql.Timestamp; import java.text.SimpleDateFormat; public class TimestampFormatting { public static void main(String[] args) { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedTimestamp = sdf.format(timestamp); System.out.println("格式化后的 Timestamp: " + formattedTimestamp); } } ``` ### 5.数据库交互 在 JDBC 中,`Timestamp` 通常用于处理数据库中的时间戳字段。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; public class TimestampDatabaseInteraction { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 插入 Timestamp 数据 String insertQuery = "INSERT INTO timestamps (timestamp_column) VALUES (?)"; try (PreparedStatement pstmt = conn.prepareStatement(insertQuery)) { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); pstmt.setTimestamp(1, timestamp); pstmt.executeUpdate(); } // 查询 Timestamp 数据 String selectQuery = "SELECT timestamp_column FROM timestamps"; try (PreparedStatement pstmt = conn.prepareStatement(selectQuery); ResultSet rs = pstmt.executeQuery()) { while (rs.next()) { Timestamp retrievedTimestamp = rs.getTimestamp("timestamp_column"); System.out.println("从数据库中查询到的 Timestamp: " + retrievedTimestamp); } } } catch (SQLException e) { e.printStackTrace(); } } } ``` ### 注意事项 - `java.sql.Timestamp` 是早期 Java 日期时间框架的一部分,存在一些设计上的问题,现在更推荐使用 `java.time` 包中的类,如 `LocalDateTime`、`ZonedDateTime` 等。 - 在进行类型转换时,要注意 `Timestamp` 和其他日期时间类的差异,避免出现 `ClassCastException` 异常 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值