最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下。。
一、日期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'和'9831 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类型是一个单字节类型用于表示年。
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 被转换为2001到2069
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 |