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

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);

    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值