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

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

]https://blog.csdn.net/Fasure_Smile/article/details/52619686

在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中生成可以存储的时间数据方法如下:

 

 
  1. Date date = new Date();

  2. Timestamp timeStamep = new Timestamp(date.getTime());

  3. System.out.println(timeStamep);

  4. //输出结果: 2016-09-22 10:38:14.964

 

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

 

 

参考链接:

http://www.cnblogs.com/JemBai/archive/2009/08/20/1550683.html

http://www.bianceng.cn/database/MySQL/201401/39415.htm

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值