日期和时间类型

    MySql有很多种表示时间和日期的类型,例如YEAR和DATE。最小的时间划分是秒。然而,它能够以微秒来进行时间计算,大部分的时间类型都是唯一的,所以没有哪个是更好的选择的问题。唯一的问题是当你同时存储时间和日期的时候应该怎么做。mysql提供了两个非常相似的数据类型:DATATIME和TIMESTAMP。对于大部分的应用来说,每一个都可以,但是在某些情况下,一个比另一个要有效。

DATATIME
     这个类型可以存储大范围的值,从1001年到9999年,精度到秒。它把日期和时间以YYYYMMDDHHMMSS的格式存在一个integer中,独立于时区(time zone),使用8个字节的存储空间。
缺省的,MySql以分类明确的格式,例如2008-01-16 22:37:08 来显示时间,这是ANSI标准的方式。

TIMESTAMP
     TIMESTAMP类型存储自1970年1月1日(格林威治时间)午夜到现在的秒数--和UNIX时间戳一样。TIMESTAMP只使用4个字节的存储空间,所以它比DATETIME的范围要小,从1970年到2038年(from the year 1970 to partway through the year 2038)。MySql提供FROM_UNIXTIME()和UNIX_TIMESTAMP()两个函数来把UNIX时间戳转换为日期,反之亦然。
     MySql新版本TIMESTAMP的值和DATETIME一样,但是在旧版本中显示时候各部分之间没有任何分隔(but older MySql versions display them without any punctuation between the parts)。这只是显示格式的不同;在所有MySql版本中,TIMESTAMP的存储格式都是一样的。
     TIMESTAPM的显示也依赖于时区。MySql服务器,os,和客户端连接都有时区的设置。因此,TIMESTAMP存储0实际上会以Eastern Daylight Time显示为1969-12-31 19:00:00,相对于GMT有5个小时的偏移。
     TIMESTAMP也有特殊的属性,而DATETIME没有。缺省的,MySql在当你插入一条记录而没有指定值的时候把第一个TIMESTAMP列设为当前时间。在更新的时候,缺省情况下,MySql也会更新第一个TIMESTAMP列的值。最后,TIMESTAMP列缺省情况下是NOT NULL,这和其它的data类型不同。
     MySql当前还没有提供合适的data类型来解决用亚秒(subsecond)来存储date和time 的方案,但是你可以使用你自己的存储格式:你可以使用BIGINT数据类型,把timestamp存储为微妙,或者你可以使用DOUBLE来存储秒的小数部分。两种方法都能工作的很好。

 

你可能感兴趣的:(应用服务器,工作,mysql,unix,OS)