mysql时间格式和Java时间格式的对应方式

 更新时间:2023年08月29日 08:46:44   作者:紫金小飞侠  
这篇文章主要介绍了mysql时间格式和Java时间格式的对应方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在 MySQL 中有两种存储时间的数据类型 DATETIME 和 TIMESTAMP ,它们在数据库实际应用中,各有各的优势和劣势。

以下将详细详解两个数据类型的区别,以及用实战案例说明它们的使用场景。

一. DATETIME 和 TIMESTAMP 的相同点

两个数据类型存储时间的格式一致。均为 YYYY-MM-DD HH:MM:SS

两个数据类型都包含「日期」和「时间」部分。

两个数据类型都可以存储微秒的小数秒(秒后6位小数秒)

二. DATETIME 和 TIMESTAMP 的区别

1.表示范围

  • DATETIME:1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999
  • TIMESTAMP:‘1970-01-01 00:00:01.000000’ UTC 到 ‘2038-01-09 03:14:07.999999’ UTC

2.空间占用

  • TIMESTAMP:占 4 个字节(小数秒+3 个字节)
  • DATETIME:在 MySQL 5.6.4 之前,占 8 个字节 ,之后版本,占 5 个字节。(小数秒+3 个字节)

3. 存入时间是否会自动转换?

  • TIMESTAMP:TIMESTAMP 的值是从「当前时间」转换成 UTC 时间,或者反过来转换。
  • DATETIME:不会做任何转换,也不会检测时区,你给什么数据,它存什么数据。

4.使用 now() 存储当前时间时

保存的实际值,是否与当前计算机时间一致?

  • TIMESTAMP:可能不一致。存储值会被转换成 UTC 时间值再存入数据库。
  • DATETIME:与当前时间是一致的。

5.如果存入的是 NULL 时,两个类型如何存储?

  • TIMESTAMP:会自动存储当前时间( now() )。
  • DATETIME:不会自动存储当前时间,会直接存入 NULL 值。

sql

CREATE TABLE `task_lock` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `task_name` varchar(255) NOT NULL,
  `lock_state` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3;

mybatis

    <insert id="save" parameterType="com.example.test1.model.TaskLock">
        insert into task_lock(task_name,lock_state,update_time) values(#{taskName},#{lockState},#{updateTime})
    </insert>

java

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class TaskLock {
    private Integer id;
    private String taskName;
    private String lockState;
    private Date updateTime;
}
    @Autowired
    TaskLockMapper taskLockMapper;
    @Test
    public void InsetTest() {
        System.out.println(taskLockMapper);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentSimpleDateFormat = simpleDateFormat.format(new Date());
       TaskLock taskLock = TaskLock.builder()
               .lockState("locked")
               .taskName("123")
               .updateTime(new Date())
               .build();
       int result = taskLockMapper.save(taskLock);
       System.out.println("result:"+result);
    }

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL中索引失效的常见场景与规避方法

    MySQL中索引失效的常见场景与规避方法

    这篇文章主要给大家介绍了关于MySQL中索引失效的常见场景与规避的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Mysql主从复制(master-slave)实际操作案例

    Mysql主从复制(master-slave)实际操作案例

    这篇文章主要介绍了Mysql主从复制(master-slave)实际操作案例,同时介绍了Mysql grant 用户授权的相关内容,需要的朋友可以参考下
    2014-06-06
  • MySQL数据库中的DDL库操作方法详解(Linux版)

    MySQL数据库中的DDL库操作方法详解(Linux版)

    DDL语句主要用于定义和管理数据库中的各种对象,如表、索引、视图和存储过程等,常见的DDL语句包括CREATE、ALTER和DROP等,这篇文章主要介绍了MySQL数据库中DDL库操作方法的相关资料,需要的朋友可以参考下
    2026-04-04
  • MySQL执行过程中选择最佳的执行路径的方法(核心流程)

    MySQL执行过程中选择最佳的执行路径的方法(核心流程)

    文章介绍MySQL查询优化器如何通过解析、生成执行计划及成本评估选择最佳路径,依赖统计信息如表行数和索引基数,开发者需创建索引、更新统计信息、优化SQL写法及使用EXPLAIN工具辅助优化,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • Docker启动mysql配置实现过程

    Docker启动mysql配置实现过程

    这篇文章主要介绍了Docker启动mysql配置实现过程,文中附含详细的图文示例,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家早日升职加薪
    2021-09-09
  • MySQL数据库备份和还原的常用命令小结

    MySQL数据库备份和还原的常用命令小结

    MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下
    2012-03-03
  • MySQL存储函数以及触发器详解

    MySQL存储函数以及触发器详解

    这篇文章详细给大家介绍了MySQL-SQL存储函数以及触发器,文中有详细的代码示例,对我们学习MySQL有一定的帮助,感兴趣的朋友可以参考阅读下
    2023-06-06
  • MySQL中like的模糊查询优化以及虚拟列功能详解

    MySQL中like的模糊查询优化以及虚拟列功能详解

    在数据库查询场景中,LIKE操作符的模糊匹配是高频需求,但传统写法往往导致全表扫描,成为性能瓶颈,这篇文章主要介绍了MySQL中like的模糊查询优化以及虚拟列功能的相关资料,需要的朋友可以参考下
    2026-03-03
  • mysql报错:1406 Data too long for column问题的多种解决方案

    mysql报错:1406 Data too long for colu

    这篇文章给大家介绍了多种解决mysql报错:1406, Data too long for column的解决方法,如果有遇到相同问题的朋友可以参考阅读本文,对解决问题有一定的帮助,需要的朋友可以参考下
    2023-09-09
  • MySQL慢查询以及重构查询的方式记录

    MySQL慢查询以及重构查询的方式记录

    MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句,这篇文章主要给大家介绍了关于MySQL慢查询以及重构查询的相关资料,需要的朋友可以参考下
    2021-06-06

最新评论