MySQL跟Java之间between时间查询问题,踩坑记

本文探讨了在Java应用中使用Timestamp与MySQL进行时间查询时遇到的问题,包括时间范围限制、8小时时区误差和between操作的注意事项。在Java中直接使用java.util.Date查询Timestamp类型时,可能会出现8小时的时区偏差,使用between操作时需要减1以避免错误。同时提醒开发者避免使用like操作,因其效率远低于between。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL的时间类型 MySQL中展示 Java中与之对应的时间类型
date 2019-12-30 java.sql.Date
dateTime 2019-12-30 11:12:57 java.sql.Timestamp
Timestamp 2019-12-30 11:14:58 java.sql.Timestamp
Time 11:15:20 java.sql.Time
Year 2019 java.sql.Date

Timestamp范围为1970-01-01 –2037年,精度为1秒

与DateTime类型非常相似,但是Datetime没有时区问题,timestamp有

如果在Sql中未对Timestamp类型的列赋值,该列将被构造成当前时间。
提交NULL值也会使该列以当前时间录入。

如果时间提交错误,该列将被填入0.

Timestamp比DateTime 类型所需的存储空间更小,只需要4个字节,而DateTime需要8个字节。

但是有一点需要特别注意。Timestamp只能表示时间范围为1970 -2037.

使用Timestamp一定要确保提交的时间数据一定不会超过这个范围。__

  1. 我们在Java中看看格式。后面发送给数据库
   @Test
    public void test(){
   
        System.out.println("new Date() = " + new Date());
        System.out.println("new java.sql.Date(new Date().getTime()) = " + new java.sql.Date(new Date().getTime()));
        System.out.println("new Timestamp(new Date().getTime()) = " + new Timestamp(new Date().getTime()));
        System.out.println("new Time(new Date().getTime()) = " + new Time(new Date().getTime()))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值