首页 > 数据库 >MySQL 时间类型 DATE、DATETIME和TIMESTAMP

MySQL 时间类型 DATE、DATETIME和TIMESTAMP

时间:2024-10-11 22:22:22浏览次数:18  
标签:00 01 14 zone TIMESTAMP DATETIME time DATE

1.DATE、DATETIME和TIMESTAMP 表达的时间范围

TypeRangeRemark
DATE'1000-01-01' to '9999-12-31'只有日期部分,没有时间部分
DATETIME'1000-01-01 00:00:00' to '9999-12-31 23:59:59'时间格式为 YYYY-MM-DD hh:mm:ss,默认精确到秒
TIMESTAMP '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07'UTC默认精确到秒

2.DATETIME和TIMESTAMP 最大时间精确度

5.7 之后的版本(其实应该说5.6.5),在默认的秒精确度上,可以带小数,最多带6位小数,即可以精确到 microseconds (6 digits) precision。

Type Range Remark
DATETIME'1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999''YYYY-MM-DD hh:mm:ss[.fraction]'
TIMESTAMP'1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999''YYYY-MM-DD hh:mm:ss[.fraction]'

3.DATETIME和TIMESTAMP 区别

(1) 时间范围不一样,TIMESTAMP 要小很多 ,且最大范围为2038-01-19 03:14:07.999999,到期也不远了。
(2)对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。

1

MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)<br>By default, the current time zone for each connection is the server's time. The time zone can be set on a per-connection basis. <br>As long as the time zone setting remains constant, you get back the same value you store. If you store a TIMESTAMP value, and then change the time zone and retrieve the value, <br>the retrieved value is different from the value you stored. This occurs because the same time zone was not used for conversion in both directions. <br>The current time zone is available as the value of the time_zone system variable.

 可能上面的几句英文不好理解,我们举个例子。

创建2张测试表:

1

2

3

create table testtime(id int,hiredate timestamp);

create table testtime1(id int,hiredate datetime);

向这两个测试表中分别插入一笔测试数据

insert into testtime values(1,'20151208000000');

insert into testtime1 values(1,'20151208000000');

查看这种显示的时区时间设置

查询命令

 show variables like '%time_zone%'; 

上述“CST”指的是MySQL所在主机的系统时间,是中国标准时间的缩写,China Standard Time UT+8:00

修改time_zone

 set time_zone='+0:00';

通过结果可以看出,testtime中返回的时间提前了8个小时,而testtime1中时间则不变。

 如果新建一个客户端连接,这个时区的修改不影响新连接。

4.TIMESTAMP在新旧版本上的重大区别

TIMESTAMP 在mysql 5.6.5之后,TIMESTAMP(fraction)中的fraction代表的是小数位数,即默认秒,以秒为单位的小数点位数。 up to microseconds (6 digits) precision,最大为6.

超过6则报错:

ERROR 1426 (42000): Too-big precision 7 specified for 'hiredate'. Maximum is 6.

在比较久的版本上,这个数字就代表不同的意义,以下内容为旧版本的关于TIMESTAMP的知识。

TIMESTAMP(fraction)中fraction值显示尺寸的格式如下表所示:

列类型显示格式
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
TIMESTAMP(4) YYMM
TIMESTAMP(2) YY

就版本中“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸,创造最常见的显示尺寸是6、8、12、和14。

在创建表时可以指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。

标签:00,01,14,zone,TIMESTAMP,DATETIME,time,DATE
From: https://blog.csdn.net/hongjian006/article/details/142697157

相关文章

  • ArgoCD + ArgoCD Image Updater 部署实现
    部署思路踩坑整理1、ArgoCD和ArgoCDImageUpdater是2个不同的程序。"ArgoCDImageUpdater小工具"没有集成在ArgoCD中需要单独部署。2、单独的ArgoCD能够实现基于git仓库变更作为应用部署的事实来源[参考子页:argocd根据镜像tag变化实现自动发布的2种方式];ArgoCD+"ArgoCD......
  • 方正畅享全媒体新闻采编系统 addOrUpdateOrg xxe漏洞
    0x01产品描述:   方正畅享全媒体新闻采编系统是一个集指挥中心、采集中心、编辑中心、发布中心、绩效考核中心和资料中心为一体的全媒体新闻采编系统‌,主要应用于媒体行业的深度融合,通过大数据和AI技术,实现新闻生产的策、采、编、发、存、传、评的全流程管理‌     ......
  • SQL 中UPDATE 和 DELETE 语句的深入理解与应用
    在SQL中,UPDATE和DELETE语句是用于操作表数据的重要工具,它们允许我们对已存在的数据进行修改和删除。一、UPDATE语句(一)基本语法UPDATE语句的基本语法如下:UPDATEtable_nameSETcolumn1=value1,column2=value2,...WHEREcondition;table_name:要更新数据的表名。co......
  • UpdatePack7R2 24.10.10 参数详细说明及示例
    UpdatePack7R224.10.10使用示例以下是一些使用UpdatePack7R2的示例命令:自动安装所有更新,包括InternetExplorer11,并重启计算机:CopyCodeUpdatePack7R2.exe/ie11/silent/reboot隐藏所有现有产品的更新,不更改InternetExplorer的版本,并且不重启计算机:CopyCode......
  • python3常用库之datetime库
    日期时间fromdatetimeimportdatetime,timedelta,timezonenow=datetime.now()print(now)#2024-02-0214:27:12.247121dt=datetime(2023,12,31,12,30,00)print(dt)#2023-12-3112:30:00#时间戳,和时区无关ts=dt.timestamp()print(ts)#17039970......
  • Error: Failed to download metadata for repo ‘update‘
    安装Rsync时报错:通常原因为从openEuler的官方仓库更新元数据时遇到超时或连接失败的问题。更换镜像源#移除旧的镜像源[[email protected]]#mv/etc/yum.repos.d/openEuler.repo/etc/yum.repos.d/openEuler.repo.bak#替换国产openEuler镜像源[root@nginx1yum......
  • C++——有一个Date类,私有成员:月、日、年,公有成员:函数,其作用输出月/日/年,一个构造函数
    没注释的源代码#include<iostream>usingnamespacestd;classDate{private:  intmonth;  intday;  intyear;public:  voiddisplay()  {    cout<<month<<"/"<<day<<"/"<<year<<endl;......