首页 > 数据库 >MySQL如何选择时间类型

MySQL如何选择时间类型

时间:2024-03-11 16:56:46浏览次数:24  
标签:02 2024 00 +---------------------+---------------------+ 22 MySQL 选择 time 类型

日常业务中经常需要记录时间,如订单生成时间、记录保存时间、更新时间等。如何选择 MySQL 表的时间字段类型呢?
一句话,看业务,具体是看业务是否会跨时区。

MySQL 的日期类型

可以用于记录日期的格式有:

Data type 实例 备注
DATE '0000-00-00' 日期(年月日)
TIME '00:00:00' 时间(时分秒)
DATETIME '0000-00-00 00:00:00' 日期+时间(年月日时分秒)
TIMESTAMP '0000-00-00 00:00:00' 时间戳
YEAR 0000 -
bigint 1708589835 long 类型,保存的也是时间戳
varchar 2024-02-22 16:17:14 时间的文本, 只能做记录,不方便排序和计算,不推荐

以上类型中,最常见的是 DATETIME、TIMESTAPM 和 BIGINT

日期类型详解

  1. DATETIME 没有时区概念。保存时,会按照客户端设置的时区时间保存。时间范围是'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'.
  2. TIMESTAMP 有时区概念,保存时底层会转换为 UTC 时间,读取时会按照客户端时区展示。时间范围是'1970-01-01 00:00:01' UTC 到'2038-01-19 03:14:07' UTC.
  3. BIGINT,也就是 Long 类型时间戳,是绝对时间,不区分时区。范围是从 1970-1-1 00:00:00 +0:00 开始,没有上限。

具体解释可以看官方文档: https://dev.mysql.com/doc/refman/8.0/en/datetime.html

新建一张测试表

CREATE TABLE `time_test` (
`datetime` DateTime,
`timestamp` TimeStamp
)ENGINE=InnoDB

查看当前会话的时区

SELECT @@session.time_zone;
+---------------------+
| @@session.time_zone |
+---------------------+
| UTC                 |
+---------------------+
1 row in set (0.04 sec)

INSERT INTO time_test VALUES(NOW(), NOW());
SELECT * FROM time_test;
+---------------------+---------------------+
| datetime            | timestamp           |
+---------------------+---------------------+
| 2024-02-22 07:42:20 | 2024-02-22 07:42:20 |
+---------------------+---------------------+
1 row in set (0.03 sec)
# 当前时间是 02-22 15:42

修改会话的时区

set time_zone = "+08:00"
SELECT * FROM time_test;
+---------------------+---------------------+
| datetime            | timestamp           |
+---------------------+---------------------+
| 2024-02-22 07:42:20 | 2024-02-22 15:42:20 |
+---------------------+---------------------+
1 row in set (0.05 sec)


INSERT INTO time_test VALUES(NOW(), NOW());
SELECT * FROM time_test;
+---------------------+---------------------+
| datetime            | timestamp           |
+---------------------+---------------------+
| 2024-02-22 07:42:20 | 2024-02-22 15:42:20 |
| 2024-02-22 16:25:05 | 2024-02-22 16:25:05 |
+---------------------+---------------------+

MySQL 时区相关命令

  • 查看当前会话时区
    SELECT @@session.time_zone;
  • 设置当前会话时区
    SET time_zone = 'Europe/Helsinki';
    SET time_zone = "+00:00";
  • 数据库全局时区设置
    SELECT @@global.time_zone;
  • 设置全局时区
    SET GLOBAL time_zone = '+8:00';
    SET GLOBAL time_zone = 'Europe/Helsinki';

标签:02,2024,00,+---------------------+---------------------+,22,MySQL,选择,time,类型
From: https://www.cnblogs.com/neuqdarcy/p/18027723

相关文章

  • MySQL 进阶实战
    目录1.数据库设计与规范化1.1.实体关系模型(ER模型)简介1.2.数据库设计的范式化过程1.3.设计常见问题和解决方案2.高级SQL技巧2.1.聚合函数和分组查询2.2.子查询和联合查询2.3.视图的创建和使用2.4.存储过程和触发器的概念3.数据库连接与应用开发3.1.使用编程......
  • MySQL分组之后按照固定顺序排序 FIELD
    以下回答来自通义千问:要按照特定顺序显示type字段的统计结果,MySQL并没有提供直接按指定顺序进行GROUPBY的方法。但是,你可以结合ORDERBY语句和FIELD()函数来实现这一需求。FIELD()函数可以将某个字段的值与一系列指定值进行比较,并按照指定值的顺序排序。假设你希望固定的type顺......
  • mysql5.7MHA配置
    准备工作,三台服务器,安装mysql5.7-glibc版本,做主从配置,用gtid模式。安装mysql1、准备安装包[root@hk2install]#llmysql-5.7.32-linux-glibc2.12-x86_64.tar.gz-rw-r--r--1rootroot661214270Jan2019:59mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz 2、解压缩,环......
  • 以太坊常见合约类型及其用途
    以太坊上常见的合约类型及其用途如下所示:代币合约(TokenContracts):用途:创建和管理代币(Token),可用于代表数字资产、代币化资产、奖励系统等。代币合约使得发行者可以定义代币的总量、转账规则、持有者权益等。多方签名合约(Multi-signatureContracts):用途:需要多个参与者签......
  • MySQL实现事务隔离的原理
    一、readview四个字段create_trx_id:创建该readview的事务的事务idm_ids:创建readview时,当前数据库中的活跃事务(指启动但还没提交的事务)min_trx_id:m_ids的最小值max_trx_id:创建readview后,下一个事务的id二、聚簇索引的隐藏列trx_id:最近一次改动该聚簇索引记录的事务idrol......
  • gleam 类型安全的编程语言
    gleam类型安全的新编程语言,基于rust开发,编程语法上与rust特性类似,runtime基于了erlang特点支持函数式编程基于erlangruntime(当然也就包含了不少erlang的特性了)包含了完整的工具连(编译器,构建工具,格式化工具,编辑器集成,包管理)可以方便的使用erlang,elixir周遍的已有的包......
  • Mysql和Clickhouse数据查询-按照时间分组统计并且对无无数据的日期补0
      最近在做数据查询需求的时候,遇到按照时间分组查询统计指标的需求,比如说查询模块的最近15天访问数据量,没有数据的日期补0,以前对于这种类似的需求都是通过代码来补数据,想试试sql实现这种查询,因此查询了不少文章,对于类似实现方法的文章网上也有很多,差异也很多,因此这篇文章只......
  • WPF实现颜色选择器
    先看效果图; 再说一下思路: 打开设计器,属性里面找到"颜色",设置为渐变色,将渐变色设置为9段,分别是,红橙黄绿青蓝紫白黑(Red,Orange,Yellow,Lime,Cyan,Blue,Magenta,White,Black);然后移动滑块儿,比如在红色和橙色和黄色之间移动的时候,会发现颜色的RGB值是有规律的变化的,R是固定......
  • leetcode 528/ LCR 071 按权重随机选择
    leetcode528/LCR071按权重随机选择528.按权重随机选择LCR071.按权重随机选择题目描述给定一个正整数数组w,其中w[i]代表下标i的权重(下标从0开始),请写一个函数pickIndex,它可以随机地获取下标i,选取下标i的概率与w[i]成正比。例如,对于w=[1,3],挑选下标0......
  • MySQL 8.0.26版本升级32版本查询数据为空的跟踪
    某业务系统将MySQL8.0.26升级为GreatSQL8.0.32-24后,某些特定的SQL语句不能查询到数据。经测试MySQL8.0.32也存在相同的问题此BUG已在GreatSQL8.0.32-25版本中解决MySQL8.0.26版本升级32版本查询数据为空的跟踪接到客户反馈的问题后,对问题进行了复现和分析。版本信......