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>create table test(t1 date,t2 time,t3 datetime);
mysql>insert test values(now(),now(),now());
mysql> select * from test;
+------------+----------+---------------------+
| t1 | t2 | t3 |
+------------+----------+---------------------+
| 2010-05-14 | 15:55:38 | 2010-05-14 15:55:38 |
+------------+----------+---------------------+
2.YEAR的范围应用
mysql> create table test2(t year);
mysql> insert test2 values(02),(89);
mysql> select * from test2;
+------+
| t |
+------+
| 2002 |
| 1989 |
+------+
在插入年份遇到2位数的时候,因为存在年份重叠,有如下规定:00--69 表示 2000-2069
70-99 表示 1970-1999
3.TIMESTAMP的使用
create table test3(value int,t1 timestamp,t2 timestamp);
insert test3 values(1,null,null);
mysql> select * from test3;
+-------+---------------------+---------------------+
| value | t1 | t2 |
+-------+---------------------+---------------------+
| 1 | 2010-05-14 16:06:52 | 2010-05-14 16:06:52 |
+-------+---------------------+---------------------+
insert test3 values(2,default,default);
mysql> select * from test3;
+-------+---------------------+---------------------+
| 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> set time_zone='+9:00';
mysql> select * from test3;
+-------+---------------------+---------------------+
| 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> set time_zone='+8:00';
参考文献:深入浅出MYSQL(网易)