老师为什么我这里显示的时分秒不正确?跟数据库的时间不一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @Test // 6、按创建时间倒序排序显示所有数据 public void demo6() { Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; SimpleDateFormat sdf= new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); try { //获得连接 conn = JDBCUtils.getConnection(); //编写SQL语句 String selectSql = "SELECT * FROM course ORDER BY createTime DESC" ; //预编译SQL pstmt = conn.prepareStatement(selectSql); //执行SQL rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt( "id" ); String name = rs.getString( "name" ); String category = rs.getString( "category" ); String desp = rs.getString( "desp" ); Date createTime = rs.getDate( "createTime" ); System.out.println(id + " " + name + " " + category + " " + desp + " " + sdf.format(createTime)); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, pstmt, conn); } } |
正在回答
同学你好,
1、TIMESTAMP与DATETIME的区别
DATETIME的默认值为null;TIMESTAMP的字段默认值为当前时间。
DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。
两者所能存储的时间范围不一样
TIMESTAMP所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999';
DATETIME所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。
2、很抱歉老师没有看清同学学习的进度哦,老师所说的XML文件在这里还没有涉及到,之后的课程中有详细讲解。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
老师我后来查到了,我百度了一下,发现如下解答
然后我试了一下,把从结果集从获取时间的方法改成了getTimestamp("createTime");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @Test // 6、按创建时间倒序排序显示所有数据 public void demo6() { Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; try { //获得连接 conn = JDBCUtils.getConnection(); //编写SQL语句 String selectSql = "SELECT * FROM course ORDER BY createTime DESC" ; //预编译SQL pstmt = conn.prepareStatement(selectSql); //执行SQL rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt( "id" ); String name = rs.getString( "name" ); String category = rs.getString( "category" ); String desp = rs.getString( "desp" ); Date createTime = rs.getTimestamp( "createTime" ); System.out.println(id + " " + name + " " + category + " " + desp + " " + createTime); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, pstmt, conn); } } |
成功获取到了时分秒
但我有如下疑问:
1:我在定义course表的时候,createTime是DATETIME类型的,然后我在JAVA代码获取createTime的值的时候,是使用resultSet的getTimestamp()方法的,Timestamp和DATETIME这两个类型不是不一样吗?为啥还是能获取到呢?
2:我在插入数据的时候,对DATETIME那个字段,我直接使用数据库中的SQL时间函数NOW()
这样做好吗?
这是我插入数据的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | Test //1、首先将表格中的三条数据添加到数据库 public void demo1() { Connection conn = null ; PreparedStatement pstmt = null ; try { //获得连接 conn = JDBCUtils.getConnection(); //编写SQL语句 String sql = "INSERT course VALUES(NULL,?,?,?,NOW()),(NULL,?,?,?,NOW()),(NULL,?,?,?,NOW())" ; //预编译SQL pstmt = conn.prepareStatement(sql); //设置具体参数 pstmt.setString( 1 , "JAVA零基础" ); pstmt.setString( 2 , "JAVA" ); pstmt.setString( 3 , "JAVA基础语法" ); pstmt.setString( 4 , "JAVA Web" ); pstmt.setString( 5 , "JAVA" ); pstmt.setString( 6 , "JSP和Servlet" ); pstmt.setString( 7 , "前端小白 " ); pstmt.setString( 8 , "前端" ); pstmt.setString( 9 , "HTML/CSS/JS" ); //执行SQL int i = pstmt.executeUpdate(); if (i > 0 ) { System.out.println( "插入记录成功!" ); } else { System.out.println( "插入记录失败了!!!" ); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release( pstmt, conn); } } |
这是course表的详细信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @Test // 6、按创建时间倒序排序显示所有数据 public void demo6() { Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; SimpleDateFormat sdf= new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); try { //获得连接 conn = JDBCUtils.getConnection(); //编写SQL语句 String selectSql = "SELECT * FROM course ORDER BY createTime DESC" ; //预编译SQL pstmt = conn.prepareStatement(selectSql); //执行SQL rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt( "id" ); String name = rs.getString( "name" ); String category = rs.getString( "category" ); String desp = rs.getString( "desp" ); Date createTime = rs.getDate( "createTime" ); System.out.println(id + " " + name + " " + category + " " + desp + " " + sdf.format(createTime)); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, pstmt, conn); } } |
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧