MySQL 日期时间类型精确到毫秒

MySQL 常用的日期时间类型常用的是datetime、timestamp。其中datetime占用5个字节(有些文档中说占用8个字节是不对的,默认也不会保存毫秒)。

DATETIME和TIMESTAMP两种数据类型,至于怎么选择需要看业务需求,其中DATETIME占用字节较多,但表示范围较大。TIMESTAMP不能用于分区列,因为这种数据类型受时区限制,会受数据库时区的影响。

创建表时使用sql,因为有需求保存时间需要精确到毫秒值,官网给出解释:MySQL has fractional seconds support forTIME,DATETIME, andTIMESTAMPvalues, with up to microseconds (6 digits) precision: 意思是三种类型都支持小数秒,就是我们平常说的毫秒。因为timestamp占用字节较少,所以选用TIMESTAMP数据类型。

CREATE TABLE `s_schedule_log` (
  `log_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'log主健',
  `job_id` int(11) DEFAULT NULL COMMENT '任务id',
  `job_name` varchar(100) DEFAULT NULL COMMENT '任务名称',
  `execute_result` varchar(10) DEFAULT NULL COMMENT '执行结果。字典EXECUTE_RESULT',
  `result_info` varchar(255) DEFAULT NULL COMMENT '执行结果信息',
  `start_time` TIMESTAMP NULL DEFAULT NULL COMMENT '开始时间',
  `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束时间',
  `error_msg` varchar(255) DEFAULT NULL COMMENT '执行失败时的错误信息',
  PRIMARY KEY (`log_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务执行日志'

实际运行时发现并未保存毫秒值,运行截图以及数据截图如下

从图中可以看出代码插入更新时都已经携带毫秒部分,当时数据库中并未保存,查询官网发文:To define a column that includes a fractional seconds part, use the syntax_`type_name`_(_`fsp`_), where_type_nameisTIME,DATETIME, orTIMESTAMP, andfsp_is the fractional seconds precision. For example:

CREATE TABLE t1 (t TIME(3), dt DATETIME(6));

The_fsp_value, if given, must be in the range 0 to 6. A value of 0 signifies that there is no fractional part. If omitted, the default precision is 0. (This differs from the standard SQL default of 6, for compatibility with previous MySQL versions.)

意思就是,毫秒部分需要以参数形式传参给数据类型,默认是不保存毫秒的,可以保存1-6位。如果需要保存三位的毫秒值,数据类型可以定义为DATETIME(3)或TIMESTAMP(3),不需要保存毫秒的话,只需要将类型直接写为DATETIME TIMESTAMP。

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值