你的位置:首页 > 数据库

[数据库]MySql中时间类型总结


最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下。。

一、日期DATE

一个日期。支持的范围是“1000-01-01”“9999-12-31”。MySQL显示日期 “YYYY-MM-DD”格式,但允许使用字符串或数字列赋值日期

 1.在一个字符串“YYYY-MM-DD”“yy-mm-dd”格式。“不严格“语法是允许任何标点符号 字符可以作为之间的日期部分的分隔符。 为,“2012-12-31”,’2012 / 12 / 31’2012 ^ 12 ^ 31,和2012 @ 12 @ 31“2012-12-31”是等价的

 


 

2.作为一个没有任何分隔符的字符串“yyyymmdd”格式字符串,只要是有意义的日期。对于 例子,“20070523”“070523”被解释为“2007-05-23”,但“071332”是非法的(无意义的 月日部分)则为“0000-00-00”

 

 

二、日期时间DATETIME

·日期和时间的组合。支持的范围是“1000-01-0100:00:00”“9999-12-31 23:59:59”。MySQL显示日期时间'YYYY-MM-DD HH:MM:SS'格式,但允许使用字符串或数字列赋值日期时间

· 1.允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-31 11:30:45'、'98.12.3111+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等价的。

 

   2.全为数字'19970523091528'和'970523091528'被解释为'1997-05-2309:15:28',但'971122129015'是不合法的  (它有一个没有意义的分钟部分),将变为'0000-00-00 00:00:00'。

 

  三、时间TIME

· 时间范围“838:59:59”“838:59:59”。格式“hh:MM:ss”(或“HHH:MM:ss”格式)。时间值的范围可以从“838:59:59”以“838:59:59”。时间可能是如此之大 因为时间型不仅可用于代表一天中的时间(必须小于24小时),但还经过两个事件之间的时间或时间间隔(这可能远大于24小时,或甚至是负的)。

缩写“1112”1112作为意义“11:12:00”(十一点后12分钟),但 MySQL它们解释为“00:11:12”(11 分钟,12秒)。同样,“12”12被解释为“00:00:12”。

 

l  四、时间戳TIMESTAMP

  1.时间戳范围“1970-01-01 00:00:01”——“2038-01-19 03:14:07”UTC。

   TIMESTAMP提供了自动 初始化和更新为当前的日期和时间。

  

  

      

  TIMESTAMP和DATETIME比较:

 

  这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。

  cx

  五、 YEAR类型

 

YEAR类型是一个单字节类型用于表示年。

   MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。 

   可以指定各种格式的YEAR值:

· 四位字符串,范围为'1901'到'2155'。

· 四位数字,范围为1901到2155。

· 两位字符串,范围为'00'到'99'。'00'到'69'和'70'到'99'范围的值被转换为2000到2069和1970到1999范围的YEAR值。

· 两位整数,范围为1到99。1到69 被转换为20012069

                  70到99范围的值被转换为1970到1999范围的YEAR值。

请注意两位整数范围与两位字符串范围稍有不同,因为你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串'0'或'00'或它被解释为0000。

·函数返回的结果,其值适合YEAR上下文,例如NOW()。

      非法YEAR值被转换为0000。

   总的格式表:  

  DATATYPE     VALUE       

         DATE

         '0000-00-00'

         TIME                       

         '00:00:00'

         DATETIME

        '0000-00-00 00:00:00'

         TIMESTAMP

        '0000-00-00 00:00:00'

          YEAR

         0000