怎样在mybatis里向mysql中插入毫秒数的时间?
由于业务场景需求,需要记录精准的时间,但是呢,又不要想使用int类型来存储时间,因为这样的可读性比较差了。
怎样在mybatis中向数据库插入毫秒级别的时间呢?
首先,先来看看怎样向数据库中插入毫秒时间。这是关键问题,如果直接向数据库插入时间都无法完成,那就不要想借助其他工具能完成了。
可以使用mysql客户端工具,插入一个时间,设置为datetime,尝试一下:
CREATE TABLE `t_job_record` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`job_name` varchar(50) NOT NULL DEFAULT '' COMMENT 'job的名称,建议使用job方法名',
`status` tinyint(2) NOT NULL DEFAULT '' COMMENT '状态,0:未执行,1:正在执行,2:执行中断,5:执行完成',
`exec_date_start` varchar(30) NOT NULL DEFAULT '' COMMENT '执行的开始日期',
`exec_date_end` varchar(30) NOT NULL DEFAULT '' COMMENT '执行的结束日期',
`req_params` varchar(1000) NOT NULL DEFAULT '' COMMENT '原始请求参数',
`job_params` varchar(500) NOT NULL DEFAULT '' COMMENT '执行job的参数',
`remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注,如执行中的简要描述',
`update_times` int(11) NOT NULL DEFAULT '' COMMENT '更新该记录的次数',
`add_ip` varchar(32) NOT NULL DEFAULT '' COMMENT '请求的原始ip',
`exec_server_ip` varchar(32) NOT NULL DEFAULT '' COMMENT '执行任务的ip',
`req_server_ip` varchar(32) NOT NULL DEFAULT '' COMMENT '请求执行机器ip',
`job_end_time` datetime() NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT 'job执行的结束时间,开始时间为create_time',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `exec_date` (`exec_date_start`,`job_name`),
KEY `idx_create_time` (`create_time`),
KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO t_job_record SET job_name = '', job_end_time = '2017-10-27 12:15:42.664' ;
发现插入后,job_end_time ='2017-10-27 12:15:43';不满足需求,于是更改时间格式为datetime(3),保留3位小数
ALTER TABLE t_job_exec_record CHANGE `job_end_time` `job_end_time` DATETIME(3) DEFAULT '1970-01-01 00:00:00.000' NOT NULL COMMENT 'job执行的结束时间,开始时间为create_time';
然后再进行相同插入,即可完成毫秒数时间的写入。
可以使用直接插入的方式进行记录后,就是考虑怎样使用工具进行完成插入了。
//得到毫秒时间字符串,然后插入
String dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(new Date());
//插入数据库
<insert id="addJobExecRecord" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO t_job_record SET job_name = #{jobName}
<if test="jobEndTime != null">
,job_end_time = #{jobEndTime}
</if>
</insert>
如此,便可以记录准确的时间了。
当然,还有另外的法子,那就是将该时间设置为 varchar 或者 char, 然后再以字符串形式写入即可。
另附注: 记录金额时,一定要使用 decimal 而非 float 或者 double 或者使用整数来记录,然后在代码中转换格式,因为decimal会更精确。
由于特殊需求场景出现,记录一下当留恋吧。
怎样在mybatis里向mysql中插入毫秒数的时间?的更多相关文章
- mysql中插入多条记录-微软批处理
当向mysql中插入大量数据时,可以使用微软的批处理方式.这样可以防止内存溢出又提高了效率.我写了一个mysql中插入多条记录的例子.赋值代码可以直接使用. 1.首先需要添加两个dll MySql.D ...
- 往MySQL数据库datetime类型字段中插入数据库的当前时间
代码: StringBuilder sb = new StringBuilder(); sb.append(" insert into uosdetailfile ("); sb. ...
- Java向mysql中插入时间的方法
ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的 ...
- Java程序在向mysql中插入数据的时候出现乱码
今天在往数据库中插入数据的时候中文字符在数据库中就出现了乱码?网上有各种说法,但是适合我的,最终解决我的问题的只有下面一种! 在创建数据库的时候,注意设置编码方式. CREATE DATABASE ` ...
- 在Mysql中插入百万级别数据的方法
首先,建立部门表和员工表: 部门表: create table dept( id int unsigned primary key auto_increment, deptno mediumint u ...
- 在MYSQL中插入当前时间,就象SQLSERVER的GETDATE()一样,以及对mysql中的时间日期操作。
在看sql教程的时候,我学的是mysql,但是教程上面的一点在mysql里面是不支持的,所以就找了其他的替代的办法 sql教程上面是这样的: 通过使用类似 GETDATE() 这样的函数,DEFAUL ...
- 关于如何在mysql中插入一条数据后,返回这条数据的id
简单的总结一下如何在mysql中出入一条数据后,返回该条数据的id ,假如之后代码需要这个id,这样做起来就变得非常方便,内容如下: <insert id="insertAndGetI ...
- PHP向MySql中插入数据
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Prope ...
- MySql中插入乱码问题解决
今天在使用Java写入数据库时候,发现Insert语句和Update语句在执行过后,数据库中中文显示的是“??”,经过一番查阅,其中关键的问题在于编码格式是否统一. 其中创建表时候,每个关键字的格式都 ...
随机推荐
- hibernate入门一
---恢复内容开始--- hibernate简介: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 3. ...
- RDMA RC UC UD
RC:面向连接的可靠服务 UC:面向连接的不可靠服务 UD:面向数据报的不可靠服务 RD:面向非连接(类似UDP)的可靠服务 面向连接 vs 面向数据报 相同点:两者的通信均包括双方QP对的参与 不同 ...
- 31. pt-variable-advisor
pt-variable-advisor h=192.168.100.101,P=3306,u=admin,p=admin mysqladmin var>/root/test/pt-variabl ...
- 26. pt-summary
pt-summary # Percona Toolkit System Summary Report ###################### Date | 2018-11-23 10:48:51 ...
- Leetcode - 517 Super Washing Machines
今天开始定期记录本人在leetcode上刷题时遇到的有意思的题目. 517. Super Washing Machines You have n super washing machines ...
- tomcat 请求处理流程分析(基于nio)
在这里我先简单的说下bio和nio的区别 这里我以电话客服的情况来解释 bio 一个客户对应一个客服, 假如客户比较麻烦,中途不挂电话,或者去做其他事情了,而客服资源会被一直占用 导致的后果是系统处理 ...
- 抖音分享和授权(iOS)
准备工作 注册appkey 抖音开放平台 集成sharesdk 下载地址 Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk ...
- 小白的CTF学习之路7——内存与硬盘
前天去网吧跟朋友包宿,导致昨天一整天都报废,今天早上研究了一下nethunter导致手机成功变砖,感冒不停地咳嗽,这些理由应该足够我前两天拖更了吧,下面开始正题 磁盘学习路线 虚拟缓存 虚拟内存 节约 ...
- MySQL中 指定字段排序函数field()的用法
MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序. 函数使用格式如下: order by (str,str1,str2,str3,str4……),str与str1,str ...
- PHP中this,self,parent的区别
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行P ...