insert语句插数据入表的时候,Date带毫秒,并且会进1. 2022-06-18 01:07:18.523 入表时间为2022-06-18 01:07:19

insert语句插数据入表的时候,Date带毫秒,并且会进1

先来看一下SQL,如下:

insert into mcc_advice_his (ADVICE_ID, ADVICE_TYPE, SUBS_ID, CUST_ID, PREFIX , ACC_NBR, MSG, MSG_PARAM, CREATED_DATE, STATE , STATE_DATE, COMMENTS, SENDER_PARAM, SENDED_DATE, EXP_DATE , DELAY_TIME, MESSAGE_ID, TIMES, TIME_INTERVAL, PART_ID , COM_ACCT_ID, ADVICE_SOURCE, ADVICE_SOURCE_ID) values (68957033, 302, 3005582, null, '63' , '9911700009', 'this notification just for test deeplink: ', '', '2022-06-18 01:11:14.000', 'C' , '2022-06-18 01:11:14.813', 'ctgmq messageId:0A1A039900002455000000622FBC23BD', '{"user_message_reference":"13161"}', null, null , null, null, null, null, 2 , null, 1, 68679810)

我们会发现,2022-06-18 01:11:14.813中是带有毫秒的,当这个毫秒超过500的时候,入库时间为:2022-06-18 01:11:15

为什么要在一这一毫秒呢?
场景:比如我们有一个mcc_contact表,这个表的数据特别大,我们做了分片的同时,根据createDate字段又做了一个库内分表,每一个月分一个表。这样我们每次去查询mccContact表的数据的时候,我们就需要带上CreateDate字段去查找。
如果不在意入表的这一毫秒误差,就会导致查出来数据为空。

解决方法:

一:使用calendar.set(Calendar.MILLISECOND, 0)方法
	// 对Date毫秒数清0
	Calendar calendar = Calendar.getInstance();
	calendar.setTime(new Date());
	// 按时分秒,毫秒域清0
	calendar.set(Calendar.MILLISECOND, 0);
	Date time = calendar.getTime();
二:切割
	String DateNow = DateUtil.formatString(new Date(), "yyyyMMddHHmmss");
	Date date = MccmDateUtil.string2Date(DateNow);
	advice.setCreatedDate(date)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值