JDBC 时间问题

先说一下mysql里面常用的时间的类型,一个是date,一个是timestamp。


date类型更偏向于记录年月日,而不记录时分秒。但是timestamp可以记录年月日时分秒。所以精确度更高一些。(个人理解)


先说对于date类型的操作。

从JDBC操作就要考虑把字符串转化为java.util.date类型,然后把util.date类型转化为sql.date类型,最后把sql.date插入数据库。

1, 字符串 --〉util.date

String dateStr = "2014-04-03 12:32" ;
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm") ;
			Date d = null;
			try {
				d = sdf.parse(dateStr);
			} catch (ParseException e) {
				e.printStackTrace();
			}

2, util.date --> sql.date


new java.sql.Date(d.getTime())

3, sql.date --> 数据库


pstmt.setDate(2, new java.sql.Date(d.getTime())) ;

好了,至此一个字符串的时间就被插入到数据库了,但是12时32分的信息没有存入数据库。


下面说说timestamp类型的插入

1, 字符串 --〉util.date是和上一个一模一样的。


2, util.date --> sql.timestamp


new java.sql.Timestamp(d.getTime())

3, sql.timestamp --> 数据库

pstmt.setTimestamp(2, new java.sql.Timestamp(d.getTime())) ;

好了,这次发现数据库里面时间后面多了两个0,因为没有设置秒,所以默认为00

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过Java代码来获取SQL的执行时间。具体步骤如下: 1. 在执行SQL语句之前,获取当前时间戳。 ```java long startTime = System.currentTimeMillis(); ``` 2. 执行SQL语句。 ```java // 假设sql为要执行的SQL语句 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ``` 3. 在执行SQL语句之后,获取当前时间戳。 ```java long endTime = System.currentTimeMillis(); ``` 4. 计算SQL执行的时间差。 ```java long executeTime = endTime - startTime; ``` 完整代码示例如下: ```java import java.sql.*; public class JdbcDemo { public static void main(String[] args) throws SQLException { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 获取数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 获取当前时间戳 long startTime = System.currentTimeMillis(); // 执行SQL语句 stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM user"); // 输出查询结果 while (rs.next()) { System.out.println(rs.getInt("id") + "," + rs.getString("name") + "," + rs.getInt("age")); } // 获取当前时间戳 long endTime = System.currentTimeMillis(); // 计算SQL执行时间 long executeTime = endTime - startTime; System.out.println("SQL执行时间:" + executeTime + "ms"); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值