业务场景:出现于在做可视化、报表相关的接口时,我们需要接收前端的一个时间参数或者是默认当前的时间,前半年数据查询或者是求总和之类的。本篇主要想分享一些关于
日期
计算、转换的方法,后面会写一篇探讨如何优化的文章。
一、 date_format(date, format)
date是需要转化的
日期
数据,format定义的是转换格式。例如:
SELECT DATE_FORMAT('2000.6.1','%y-%m-%d %W')
还可以这样:
SELECT DATE_FORMAT('2000.6.1','%.
在项目中可能用时间作为盐值
加
密或者时间快照来判断一些业务逻辑。但是每次从数据库中取回来时,总是会发现多一秒的情况。
mysql
的驱动升级导致的 会将大于500
毫秒
的时间四舍五入。
核心代码(Java)
采用apache的DateUtils类进行操作。
DateUtils.round(new Date(),Calendar.SEC......
今天新增一个需求,要根据datetime
字
段匹配几张表里的记录值。结果发现总是有几条记录莫名其妙多1秒钟,开始以为是数据来源那边有问题,经过一系列排查发现数据到插入前都是对的…
度娘说是
mysql
保存
日期
时间值时会对
毫秒
级的精度进行调整,四舍五入。这么一说就清楚了呀。
3.解决方案
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.MILLISECOND, 0);
MySQL
(用的8.0.16版)中列的数据类型是 datetime,成功插入记录后,根据插入的时间有时候查不到对应的记录。
插入的SQL语句如下。
==> Preparing: INSERT INTO tb_contest_conclusion ( id,user_id,create_time,finish_time ) VALUES( ?,?,?,? )
==> Parameters: null, 1(Long), 2020-10-03 14:36:26.499(Timesta
select date_add(@dt, interval 1 day); -
加
1天
select date_add(@dt, interval 1 hour); -
加
1小时
select date_add(@dt, interva
MySQL
较新的版本中(
MySQL
6.0.5),也还没有产生微秒的函数,now() 只能精确到秒。
MySQL
中也没有存储带有
毫秒
、微秒的
日期
时间类型。
但,奇怪的是
MySQL
已经有抽取(extract)微秒的函数。例如: