mysql datetime详解_Mysql 之Date,DateTime,TimeStamp三种种类的详解

2022年6月5日13:36:51

DATETIME, DATE和TIMESTAMP种类是相干的。本文描写他们的个性,他们是如何相仿的而又不同的。

DATETIME种类用在你必需同时包括日期和工夫消息的值时。MySQL检索并且以'YYYY-MM-DD

HH:MM:SS'款式揭示DATETIME值,扶持的范围是'1000-01-01 00:00:00'到'9999-12-31

23:59:59'。(“扶持”意味着尽管更早的值可能工作,但不能保证他们能够。)

DATE种类用在你仅必需日期值时,未曾工夫局部。MySQL检索并且以'YYYY-MM-DD'款式揭示DATE值,扶持的范围是'1000-01-01'到'9999-12-31'。

TIMESTAMP列种类供给一种种类,你能够利用它积极地用目前的日期和工夫符号INSERT或UPDATE的垄断。万一你有多个TIMESTAMP列,只有第一个积极更新。

积极更新第一个TIMESTAMP列在下列任何条件下发生:

列未曾确定地在一个INSERT或LOAD DATA INFILE语句中指定。

列未曾确定地在一个UPDATE语句中指定且一些另外的列改换值。(当心一个UPDATE设置一个列为它曾经有的值,这将不引起TIMESTAMP列被更新,因为万一你设置一个列为它目前的值,MySQL为了效率而疏忽改动。)

你确定地设定TIMESTAMP列为NULL.

除第一个以外的TIMESTAMP列也能够设置到目前的日期和工夫,凡是将列设为NULL,或NOW()。

穿越确定地设置渴望的值,你能够设置任何TIMESTAMP列为不同于目前日期和工夫的值,即便对第一个TIMESTAMP列也是这么。例如,万一,当你创立一个行时,你想要一个TIMESTAMP被设置到目前的日期和工夫,但在尔后无论何时髦被更新时都不改换,你能够利用这个属性jn.jnns.com:

让MySQL行家被创立时设置列,这将初始化它为目前的日期和工夫。

当你厉行随后的对该行中其他列的改动时,确定设定TIMESTAMP列为它的目前值。

另一方面,你可能觉察,当行被创立并且远离随后的改动时,很轻率用一个你用NOW()初始化的DATETIME列。

TIMESTAMP值能够从1970的某时的开始始终到2037年,精度为一秒,其值作为数字揭示。

在MySQL检索并且揭示TIMESTAMP值取决于揭示尺寸的款式如下表。“全面”TIMESTAMP款式是14位,然而TIMESTAMP列能够用更短的揭示尺寸发明:

列种类     揭示款式

TIMESTAMP(14) YYYYMMDDHHMMSS

TIMESTAMP(12) YYMMDDHHMMSS

TIMESTAMP(10) YYMMDDHHMM

TIMESTAMP(8) YYYYMMDD

TIMESTAMP(6) YYMMDD

TIMESTAMP(4) YYMM

TIMESTAMP(2) YY

所有的TIMESTAMP列都有同样的存储大小,不琢磨揭示尺寸。最常见的揭示尺寸是6、8、12、和14。你能够在表创立工夫指定一个任意的揭示尺寸,然而值0或比14大***使到14。在从1~13范围的奇数值尺寸***使为下一个更大的偶数。

利用一个常用的款式集的任何一个,你能够指定DATETIME、DATE和TIMESTAMP值:

'YYYY-MM-DD HH:MM:SS'或'YY-MM-DD

HH:MM:SS'款式的一个字符串。批准一种“松动”的语法--任何标点可用作在日期局部和工夫局部之间的分隔符。例如,'98-12-31

11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31

11^30^45'是等价的。

'YYYY-MM-DD'或'YY-MM-DD'款式的一个字符串。批准一种“松动”的语法。例如,'98-12-31',

'98.12.31', '98/12/31'和'98@12@31'是等价的。

'YYYYMMDDHHMMSS'或'YYMMDDHHMMSS'款式的未曾任何分隔符的一个字符串,例如,'19970523091528'和'970523091528'被解释为'1997-05-23

09:15:28',然而'971122459015'是不合法的(它有毫无意义的分钟局部)且变成'0000-00-00

00:00:00'。

'YYYYMMDD'或'YYMMDD'款式的未曾任何分隔符的一个字符串,万一字符串感受是一个日期。例如,'19970523'和'970523'被解释作为'1997-05-23',然而'971332'是不合法的(

它有无意义的月和天局部)且变成'0000-00-00'。

YYYYMMDDHHMMSS或YYMMDDHHMMSS款式的一个数字,万一数字感受是一个日期。例如,19830905132800和830905132800被解释作为'1983-09-05

13:28:00'。

YYYYMMDD或YYMMDD款式的一个数字,万一数字感受是一个日期。例如,19830905和830905被解释作为'1983-09-05'。

一个归来值能够在一个DATETIME,

DATE或TIMESTAMP上下文环境中接受的函数,例如NOW()或CURRENT_DATE。

不合法DATETIME,

DATE或TIMESTAMP值被改换到贴切种类的“零”值('0000-00-00

00:00:00', '0000-00-00'或00000000000000)。

对于包括的日期局部分隔符的指定为字符串的值,无须要为小于10的月或天的值指定2位数字,'1979-6-9'与'1979-06-09'是一样的。同样,

对于包括的工夫局部分隔符的指定为字符串的值,无须为小于10的小时、月或秒指定2位数字,'1979-10-30

1:2:3'与'1979-10-30 01:02:03'是一样的。

指定为数字该当是6、8、12或14位长。万一数字是8或14位长,它被假定以YYYYMMDD或YYYYMMDDHHMMSS款式并且年份由头4位数字给出。万一数字是6或12位长,它被假定是以YYMMDD或YYMMDDHHMMSS款式且年份由头2位数字给出。不是这些长度之一的数字穿越添补前头的零到最接近的长度来解释。

指定为无分隔符的字符串用它们给定的长度来解释。万一字符串长度是8或14个字符,私人游艇年份被假定头4个字符给出,否则年份被假定由头2个字符给出。对于字符串中出现的多个局部,字符串从左到右边被解释,以找出年、月、日、小时、分钟和秒值,这意味着,你不该当利用少于

6

个字符的字符串。例如,万一你指定'9903',感受将代表1999年3月,你会觉察MySQL把一个“零”日期插入到你的表中,这是因为年份和月份值99和03,然而日期局部失落(零),因而该值不是一个合法的日期。

TIMESTAMP列利用被指定的值的全面精度的存储合法的值,不琢磨揭示大小。这有几个含义:

总是指定年,月,和日,即便你的列种类是TIMESTAMP(4)或TIMESTAMP(2)。否则,值将不是一个合法的日期并且0将被存储。

万一你利用ALTER

TABLE拓宽一个狭隘的TIMESTAMP列,过去被“隐藏”的消息将被揭示。

同样ic.iclarins.com,缩小一个TIMESTAMP列不会导致消息错过,除非感受上值在揭示时,较少的消息被揭示出。

尽管TIMESTAMP值被存储为全面精度,直接垄断存储值的单一函数是UNIX_TIMESTAMP(),其他函数垄断在款式化了的检索的值上,这意味着你不能利用函数例如HOUR()或SECOND(),除非TIMESTAMP值的相干局部被包括在款式化的值中。例如,一个TIMESTAMP列的HH局部部被揭示,除非揭示大小起码是10,因而在更短的TIMESTAMP值上试试利用HOUR()发生一个无意义的收获。

在某种程度上,你能够把一种日期种类的值赋给一个不同的日期种类的对象。然而,这可能值有一些改换或消息的磨损:

万一你将一个DATE值赋给一个DATETIME或TIMESTAMP对象,收获值的工夫局部被设置为'00:00:00',因为DATE值不包括工夫消息。

万一你将一个DATETIME或TIMESTAMP值赋给一个DATE对象,收获值的工夫局部被剔除,因为DATE种类不存储工夫消息。

记住,尽管DATETIME,

DATE和TIMESTAMP值全都能够用同样的款式集来指定,但所有种类不都有同样的值范围。例如,TIMESTAMP值不能比1970早或比2037网晚,这意味着,一个日期例如'1968-01-01',当作为一个DATETIME或DATE值合法时,它不是一个准确TIMESTAMP值,并且

万一赋值给这么一个对象,它将被改换到0。

当指定日期值时,当心某些缺点:

批准作为字符串指定值的松动款式能被诱骗。例如,值例如'10:11:12'可能看起来像工夫值,因为“:”分隔符,然而万一在一个日期中利用,上下文将作为年份被解释成'2010-11-12'。值'10:45:15'将被改换到'0000-00-00',因为'45'不是一个合法的月份。

以2位数字指定的年值是笼统的,因为世纪是未知的。MySQL利用下列法定解释2位年值:

在00-69范围的年值被改换到2000-2069。

在70-99范围的年值被改换到1970-1999。

八个容易的问题,穿插在同随时,业绩了一道“众口难调”的混杂的问题。

  • 作者:weixin_39710179
  • 原文链接:https://blog.csdn.net/weixin_39710179/article/details/113938973
    更新时间:2022年6月5日13:36:51 ,共 3845 字。