java中存储mysql数据库时间类型【date、time、datetime、timestamp】

在mysql中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的。

昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


图片被吃了


如图,mysql中的datetime类型数据对应的是java中的Timestamp类。

date:只有日期,没有时间,2016-09-21;

time:只有时间,没有日期,23:42:31;

datetime:日期时间都有,2016-09-21 23:42:31 。

timestamp:可以在进行Insert或者update的时候自动的为你插入时间,时间格式:2016-09-21 23:42:31。


用navicat找了一张表添加了一个timestamp的字段,如下:



导出表结构看到该字段sql为:`time_test` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,


言归正传,本次数据库中用的是datetime类型的,在java中生成可以存储的时间数据方法如下:

Date date = new Date();       
Timestamp timeStamep = new Timestamp(date.getTime());
System.out.println(timeStamep);
//输出结果: 2016-09-22 10:38:14.964

可以看到得到的结果还带有毫秒这个可以直接存储,到数据库里面就自动去掉毫秒了,另外在数据库中存入的不带毫秒的时间,在java中从数据库获取该时间后也是带有毫秒的,只是毫秒为为0。


参考链接:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
还在上班,老大在背后坐着呢安静,其它数据类型的获取应该也没什么难度,下次有时间了再总结。

如有异议,欢迎指正。







  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL时间类型有四种,分别是DATETIMEDATETIMETIMESTAMP,这些类型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类型的值写入到MySQLDATETIME类型的字段时,可以使用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类型的值写入到MySQLDATE类型的字段时,可以使用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类型的值写入到MySQLTIME类型的字段时,可以使用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类型的值写入到MySQLTIMESTAMP类型的字段时,可以使用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(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值