JDBC日期类型

Java日期操作示例

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Date;

 

public class DateTest {

    public static void main(String[] args) throws SQLException {

       // create("name2", new Date(), 500.0f);

       Date d = read(7);

       System.out.println(d);

    }

    查询的时候:

    static Date read(int id) throws SQLException {

       Connection conn = null;

       Statement st = null;

       ResultSet rs = null;

       Date birthday = null;

       try {

           // 2.建立连接

           conn = JdbcUtils.getConnection();

           // conn = JdbcUtilsSing.getInstance().getConnection();

           // 3.创建语句

           st = conn.createStatement();

 

           // 4.执行语句

           rs = st.executeQuery("select birthday  from user where id=" + id);

 

           // 5.处理结果

           while (rs.next()) {

              //birthday = new Date(rs.getDate("birthday").getTime());

              birthday = rs.getDate("birthday");

           }

       } finally {

           JdbcUtils.free(rs, st, conn);

       }

       return birthday;

    }

    添加的时候

    static void create(String name, Date birthday, float money)

           throws SQLException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           // 2.建立连接

           conn = JdbcUtils.getConnection();

           // conn = JdbcUtilsSing.getInstance().getConnection();

           // 3.创建语句

           String sql = "insert into user(name,birthday, money) values (?, ?, ?) ";

           ps = conn.prepareStatement(sql);

           ps.setString(1, name);

           ps.setDate(2, new java.sql.Date(birthday.getTime()));

           ps.setFloat(3, money);

 

           // 4.执行语句

           int i = ps.executeUpdate();

 

           System.out.println("i=" + i);

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

}

 

### 关于 JDBC日期处理的方法 当使用 JDBC 处理来自 MySQL 数据库的时间字段时,可能会遇到时间格式不匹配的问题。为了确保 `start_time` 字段能够被正确解析并用于日志记录或其他用途,可以采用特定的方式进行转换。 对于从 MySQL 获取的数据中的 `start_time` 字段已经是以时间为数据类型的实例,在 Logstash 使用此字段作为 `@timestamp` 之前不需要再次尝试将其转换为日期格式[^2]。然而,如果确实需要调整或重新设置该字段的值,则可以通过 Java 的 `java.sql.Date`, `java.sql.Time`, 或者 `java.sql.Timestamp` 类来进行操作: ```java // 假设 resultSet 是执行查询后得到的结果集对象 ResultSet resultSet = statement.executeQuery("SELECT start_time FROM your_table"); while (resultSet.next()) { // 将 SQL 时间戳转成 java.util.Date 对象 Timestamp timestamp = resultSet.getTimestamp("start_time"); // 如果只需要日期部分而不关心具体时刻, 可以这样做: Date dateOnly = new Date(timestamp.getTime()); } ``` 另外一种常见的情况是在插入或者更新数据库表项时指定日期/时间值。此时应该利用 PreparedStatement 来防止SQL注入攻击,并且应当传递合适的参数类型给相应的列: ```sql INSERT INTO events (event_date) VALUES (?); ``` 对应的Java代码片段如下所示: ```java String sql = "INSERT INTO events (event_date) VALUES (?)"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); int affectedRows = pstmt.executeUpdate(); ``` 上述例子展示了如何向名为 `events` 的表格中添加一条新纪录并将当前系统时间存储到 `event_date` 列里。这里用到了 `setTimestamp()` 方法来设定预编译语句中的占位符(`?`)所代表的具体数值。 #### 注意事项 - 当读取或写入日期型数据至MySQL时,请确认应用程序端使用的类与目标列的实际数据类型相兼容。 - 若需自定义日期字符串的表现形式(例如改变显示顺序),可借助 SimpleDateFormat 等工具类完成格式化工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值