MySQL日期时间类型大致可以分成(5.0版本):
DATE:4字节1000-01-01 ----9999-12-31
TIME:3字节-839:59:59 -----839:59:59
YEAR:1字节1901-----2155
DATETIME:8字节1000-01-01 00:00:00 -------- 9999-12-31 23:59:59
TIMESTAMP:4字节19700101080001 -------2038年某个时刻
使用小例:
1.DATE、TIME、DATETIME的简单使用
mysql>createtabletest(t1date,t2time,t3datetime);
mysql>inserttestvalues(now(),now(),now());
mysql>select*fromtest;
+------------+----------+---------------------+
|t1|t2|t3|
+------------+----------+---------------------+
|2010-05-14|15:55:38|2010-05-14 15:55:38|
+------------+----------+---------------------+
2.YEAR的范围应用
mysql>createtabletest2(tyear);
mysql>inserttest2values(02),(89);
mysql>select*fromtest2;
+------+
|t|
+------+
|2002|
|1989|
+------+
在插入年份遇到2位数的时候,因为存在年份重叠,有如下规定:00--69表示2000-2069
70-99 表示1970-1999
3.TIMESTAMP的使用
createtabletest3(valueint,t1timestamp,t2timestamp);
inserttest3values(1,null,null);
mysql>select*fromtest3;
+-------+---------------------+---------------------+
|value|t1|t2|
+-------+---------------------+---------------------+
|1|2010-05-14 16:06:52|2010-05-14 16:06:52|
+-------+---------------------+---------------------+
inserttest3values(2,default,default);
mysql>select*fromtest3;
+-------+---------------------+---------------------+
|value|t1|t2|
+-------+---------------------+---------------------+
|1|2010-05-14 16:06:52|2010-05-14 16:06:52|
|2|2010-05-14 16:07:30|0000-00-00 00:00:00|
+-------+---------------------+---------------------+
注意这里的第二个TIMESTAMP字段默认值为0而且它不可以将默认值设置为CURRENT_TIMESTAMP,因为在它之前已经有一个一样类型的字段了。
注意:timestamp属性的字段插入和显示的值会转化成本地时区的时间。
先改变本机时区
mysql>settime_zone='+9:00';
mysql>select*fromtest3;
+-------+---------------------+---------------------+
|value|t1|t2|
+-------+---------------------+---------------------+
|1|2010-05-14 17:06:52|2010-05-14 17:06:52|
|2|2010-05-14 17:07:30|0000-00-00 00:00:00|
+-------+---------------------+---------------------+
跟上面的现实相比你会发现 时间值延后了一个小时,因为东九区比东八区快了一个小时
mysql>settime_zone='+8:00';
参考文献:深入浅出MYSQL(网易)