iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 数据库如何实现存储时间
  • 197
分享到

MySQL 数据库如何实现存储时间

2024-04-02 19:04:59 197人浏览 薄情痞子
摘要

目录1.切记不要用字符串存储日期2.Datetime 和 Timestamp 之间抉择2.1 DateTime 类型没有时区信息的2.2 DateTime 类型耗费空间更大3.再看

1.切记不要用字符串存储日期

字符串占用的空间更大!

字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 api 进行计算和比较。

2.Datetime 和 Timestamp 之间抉择

Datetime 和 Timestamp 是 Mysql 提供的两种比较相似的保存时间的数据类型。

他们两者究竟该如何选择呢?

通常我们都会首选 Timestamp

2.1 DateTime 类型没有时区信息的

DateTime 类型是没有时区信息的(时区无关)

当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。

Timestamp 和时区有关。

Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。

下面实际演示一下!

建表 SQL 语句:

CREATE TABLE `time_zone_test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `date_time` datetime DEFAULT NULL,
  `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据:

INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());

查看数据:

select dsqlate_time,time_stamp from time_zone_test;

结果:

+---------------------+---------------------+
| date_time           | time_stamp          |
+---------------------+---------------------+
| 2020-01-11 09:53:32 | 2020-01-11 09:53:32 |
+---------------------+---------------------+

修改当前会话的时区:

set time_zone='+8:00';

再次查看数据:

+---------------------+---------------------+
| date_time           | time_stamp          |
+---------------------+---------------------+
| 2020-01-11 09:53:32 | 2020-01-11 17:53:32 |
+---------------------+---------------------+

扩展: 一些关于 MySQL 时区设置的一个常用 sql 命令

1. 查看当前会话时区

    SELECT @@session.time_zone;

2. 设置当前会话时区

    SET time_zone = 'Europe/Helsinki';
    SET time_zone = "+00:00";

3. 数据库全局时区设置

    SELECT @@global.time_zone;

4. 设置全局时区

    SET GLOBAL time_zone = '+8:00';
    SET GLOBAL time_zone = 'Europe/Helsinki';

2.2 DateTime 类型耗费空间更大

Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。但是,这样同样造成了一个问题,Timestamp 表示的时间范围更小。

  • DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
  • Timestamp: 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59

Timestamp 在不同版本的 MySQL 中有细微差别。

3.再看 MySQL 日期类型存储空间

下图是 MySQL 5.6 版本中日期类型所占的存储空间:

可以看出 5.6.4 之后的 MySQL 多出了一个需要 0 ~ 3 字节的小数位。Datatime 和 Timestamp 会有几种不同的存储空间占用。

为了方便,本文我们还是默认 Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。

4.数值型时间戳是更好的选择吗?

很多时候,我们也会使用 int 或者 bigint 类型的数值也就是时间戳来表示时间。

这种存储方式的具有 Timestamp 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作的效率会更高,跨系统也很方便,毕竟只是存放的数值。缺点也很明显,就是数据的可读性太差了,你无法直观的看到具体时间。

时间戳的定义如下:

时间戳的定义是从一个基准时间开始算起,这个基准时间是「1970-1-1 00:00:00 +0:00」,从这个时间开始,用整数表示,以秒计时,随着时间的流逝这个时间整数不断增加。

这样一来,我只需要一个数值,就可以完美地表示时间了,而且这个数值是一个绝对数值,即无论的身处地球的任何角落,这个表示时间的时间戳,都是一样的,生成的数值都是一样的,并且没有时区的概念,所以在系统的中时间的传输中,都不需要进行额外的转换了,只有在显示给用户的时候,才转换为字符串格式的本地时间。

数据库中实际操作:

mysql> select UNIX_TIMESTAMP('2020-01-11 09:53:32');
+---------------------------------------+
| UNIX_TIMESTAMP('2020-01-11 09:53:32') |
+---------------------------------------+
|                            1578707612 |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> select FROM_UNIXTIME(1578707612);
+---------------------------+
| FROM_UNIXTIME(1578707612) |
+---------------------------+
| 2020-01-11 09:53:32       |
+---------------------------+
1 row in set (0.01 sec)

5.总结

推荐 Timestamp,原因是数值表示时间不够直观

每种方式都有各自的优势,根据实际场景才是王道。下面再对这三种方式做一个简单的对比,以供大家实际开发中选择正确的存放时间的数据类型:

6.设置mysql date类型字段默认值支持0000格式

[mysqld]
sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 数据库如何实现存储时间

本文链接: https://www.lsjlt.com/news/143835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 数据库如何实现存储时间
    目录1.切记不要用字符串存储日期2.Datetime 和 Timestamp 之间抉择2.1 DateTime 类型没有时区信息的2.2 DateTime 类型耗费空间更大3.再看 ...
    99+
    2024-04-02
  • MySQL数据库怎么实现存储时间
    这篇文章将为大家详细讲解有关MySQL数据库怎么实现存储时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.切记不要用字符串存储日期字符串占用的空间更大!字符串存储的日期比较效率比较低(逐个字符进行比对...
    99+
    2023-06-29
  • MySQL中如何存储时间
    这篇文章主要介绍了MySQL中如何存储时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间。在数据库中...
    99+
    2023-06-20
  • 如何利用Python连接MySQL数据库实现数据储存
    目录介绍 Python连接MySQL实现数据储存总结介绍 MySQL是一个关系型数据库,MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库。最开始由瑞典的MySQL...
    99+
    2024-04-02
  • Python 大数据存储:如何实现高效的响应时间?
    Python 在大数据存储中的应用越来越广泛,尤其是在数据分析和人工智能领域。然而,当数据量达到亿级别,如何实现高效的响应时间成为了一个挑战。本文将介绍一些实用的技巧,帮助你在 Python 中实现高效的大数据存储和查询。 一、选择合适的...
    99+
    2023-06-27
    存储 响应 大数据
  • Prometheus系统如何存储时间序列数据
    Prometheus系统存储时间序列数据使用一种称为"TSDB"(Time Series Database)的存...
    99+
    2024-03-04
    Prometheus
  • mysql如何存储数据
    MySQL可以使用表来存储数据,表由行和列组成。每一行表示一个记录,每一列表示一个字段。在创建表时,需要指定表的名称和字段的名称、类型以及其他属性。以下是一个创建表和存储数据的示例:1. 创建表:```sqlCREATE TABLE u...
    99+
    2023-08-11
    mysql
  • MySQL如何实现按时间统计数据
    这篇文章主要介绍了MySQL如何实现按时间统计数据,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。在做数据库的统计时,经常会需要根据年、月、日来统...
    99+
    2024-04-02
  • Android如何通过SQLite数据库实现数据存储管理
    这篇文章主要介绍了Android如何通过SQLite数据库实现数据存储管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。0 实验环境在Android Studio中进行有关代...
    99+
    2023-06-25
  • MySQL数据库临时文件储存在哪里
    这篇文章主要讲解了“MySQL数据库临时文件储存在哪里”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库临时文件储存在哪里”吧!MySQL使用环...
    99+
    2024-04-02
  • Java生成日期时间存入Mysql数据库的实现方法
    目录一、创建数据库标准二、数据库表结构三、使用步骤一、创建数据库标准 1.表的必备三个字段:id、gmt_create、gmt_modified 2.gmt_create是创建时间,...
    99+
    2024-04-02
  • Pandas如何实现数据的存储
    这篇文章给大家分享的是有关Pandas如何实现数据的存储的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据的存储数据可以有两种类型-连续的和离散的,这取决于我们的分析要求。有时我们不需要连续变量中的精确值,但需要...
    99+
    2023-06-26
  • Python Pymysql如何实现数据存储
    这篇文章主要介绍“Python Pymysql如何实现数据存储”,在日常操作中,相信很多人在Python Pymysql如何实现数据存储问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pyt...
    99+
    2023-07-05
  • MySQL空间数据存储及函数
    目录一、数据类型1.什么是MySQL空间数据2.什么是geojson3.格式化空间数据类型(geometry相互转换geojson)二、空间分析1、根据点位及半径,生成缓冲区三、判断...
    99+
    2024-04-02
  • MySQL如何实现定时全库备份数据库
    这篇文章给大家分享的是有关MySQL如何实现定时全库备份数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、MySQL数据备份1.1、 mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以...
    99+
    2023-06-20
  • ASP.NET和SQL Server数据库图片存储如何实现
    这篇文章主要为大家展示了“ASP.NET和SQL Server数据库图片存储如何实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET和SQL Server数据库图片存储如何实现”这篇...
    99+
    2023-06-18
  • 阿里云数据库存储空间与数据存储的区别
    随着云计算技术的发展,越来越多的企业开始将数据存储和管理转移到云端。其中,阿里云的数据库服务备受关注。那么,阿里云的数据库是存储空间还是数据存储呢?本文将对此进行详细说明。 一、阿里云数据库的定义阿里云数据库是阿里云提供的一种云端数据库服务...
    99+
    2023-11-11
    阿里 存储空间 数据存储
  • mysql数据库存储数据的过程
    这篇文章主要讲解了“mysql数据库存储数据的过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库存储数据的过程”吧! 存储过程如下: J...
    99+
    2024-04-02
  • 阿里oss云存储数据库还是存储空间?
    阿里oss云存储,全称阿里云对象存储服务,是阿里云推出的一种分布式存储服务,主要应用于数据存储、备份、归档和对象分发等场景。在使用阿里oss云存储的过程中,很多人会问:阿里oss云存储是数据库吗?答案是否定的。阿里oss云存储主要提供存储空...
    99+
    2023-11-11
    阿里 存储空间 数据库
  • MySQL存储过程:实现数据库操作的利器
    MySQL存储过程:实现数据库操作的利器 在MySQL数据库中,存储过程是一种用来存储和重复执行SQL语句的数据库对象。它可以将一系列SQL语句封装在一起,使其成为一个可重复调用的逻辑...
    99+
    2024-03-14
    mysql 数据库 存储过程 sql语句
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作