当前位置: 首页 > news >正文

MySQL数据库中的CURRENT_TIMESTAMP函数使用经验小结

一 背景

在数据插入时,将数据的插入时间以系统默认时间值的形式进行插入。例如:

CREATE TABLE example_table (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO example_table (name) VALUES ('测试用户');

在查阅相关资料时得知:

  • CURRENT_TIMESTAMP返回当前日期和时间,其数据类型为DATETIME或TIMESTAMP。
  • 对于TIMESTAMP类型,取值范围是从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。
  • 对于DATETIME类型,默认情况下,取值范围是从1000-01-01 00:00:00到9999-12-31 23:59:59。
  • 在MySQL 8.0及更高版本中,DATETIME和TIMESTAMP类型支持微秒精度,可以存储到小数点后6位。

因此,需要确认在时间超过2038-01-19 03:14:07 UTC时,建表、插入数据时数据库是否能够正常运行。

二 验证过程

2.1 关闭系统自动时间同步

sudo timedatectl set-ntp false

2.2 变更当前系统时间到2037年

sudo timedatectl set-time "2037-10-01 12:30:00"

当前系统时间更新为2037-10-01 12:30:00,执行建表、插入SQL。建表成功,插入也正常。

2.3 变更当前系统时间到2039年

sudo timedatectl set-time "2039-10-01 12:30:00"

执行建表语句,报错如下:
[HY000][3507] Failed to update tables dictionary object.

2.4 变更当前系统时间到2037年,建表后变更系统时间到2039年

sudo timedatectl set-time "2037-10-01 12:30:00"

执行建表语句,建表成功。变更当前系统时间到2039年:

sudo timedatectl set-time "2039-10-01 12:30:00"

插入成功,时间正确。

执行结果

三 结论

1、如果在2038-01-19 03:14:07 UTC前,MySQL数据库建表以及通过使用CURRENT_TIMESTAMP进行时间插入时,均正常;
2、如果在2038-01-19 03:14:07 UTC后,MySQL数据库建表建表会出现报错。但建表在2038-01-19 03:14:07 UTC前,在该时间点后通过使用CURRENT_TIMESTAMP进行时间插入时,正常;CURRENT_TIMESTAMP 返回的类型通常为 DATETIME 或 TIMESTAMP,在进行日期和时间计算时,确保与其他日期和时间字段的数据类型一致,以避免类型转换错误;
3、CURRENT_TIMESTAMP 是获取当前日期和时间的基础函数,但在不同的数据库系统中,还有其他类似的函数,如 NOW()、SYSDATE() 等。

四 参考资料

1、DATE、DATETIME 和 TIMESTAMP 类型
2、Can not create database when set since year 2038

原文地址:https://blog.csdn.net/solaraceboy/article/details/143323802
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/61014.html

相关文章:

  • 【亚马逊云科技】Amazon Bedrock搭建AI服务
  • 磁盘空间不足导致postgreSQL启动失败
  • flutter VideoPlayer适配:保持视频的原始宽高比,缩放视频使它完全覆盖父容器
  • 鸿蒙应用开发实战-常用组件-图片组件
  • .NET Core WebApi第7讲:项目的发布与部署
  • SpringBoot框架在商场应急管理中的实践
  • CRM客户关系管理系统:全方位功能模块助力企业高效运营与增长
  • 从理解路由到实现一套Router(路由)
  • 理解dbt Exposures及应用示例
  • Java:多线程(线程池,执行原理,优雅停止,延迟周期)
  • 管家婆财贸ERP BB055.销售检查可销库存+BB058.读取品牌销售数量
  • vue中elementUI的el-select下拉框的层级太高修改设置!
  • PFC前端电路
  • 基于centos7.9搭建MariaDB10.5高可用集群
  • 落地分享:来看 UFH AI 医疗大模型如何助力国际化诊疗场景
  • 推荐一款出色的图像查看器:Pineapple Pictures
  • 02 什么是Babel
  • 揭秘程序员薪资密码:10K 与 20K 的思维 “分水岭”
  • 【C++】多态与虚函数:深入理解对象的动态行为(万字长文详解)
  • 设计资讯 | 塑造数字交互未来的 Sol Reader