表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。TIMESTAMP类型有专有的自动更新特性,将在后面描述。

+-------+--------+--------+-----------+---------------------+
| carId | userId | bookId | bookCount | carTime             |
+-------+--------+--------+-----------+---------------------+
|     8 |      1 |      2 |         2 | 2016-02-01 19:10:54 |
|     9 |      1 |      3 |         1 | 2016-02-01 19:13:13 |
+-------+--------+--------+-----------+---------------------+

TIMESTAMP列用于INSERTUPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。
TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。

CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                             ON UPDATE CURRENT_TIMESTAMP); //用DEFAULT CURRENT_TIMESTAMP子句不用ON UPDATE子句,列为默认值使用当前的时间戳但是updata修改时不自动更新。

(下面这话我感觉有问题,虽然明白数据类型不同,可我测试like能查到数据,不解)
注意:timestamp数据类型一般用作为表行加版本戳的机制,不是用来作为日期类型查询的,所以当使用select * from table where timestamp like '2016-02-01%'是查不出来的。

1、日期一般使用datatime来查,例如:……where CONVERT(varchar(100),timestamp,21) like '2016-02-01%';

2、或者用to_date函数转化,例如:where timestamp like to_date('2016-02-01%',''yyyy-MM-dd HH:MM:SS' ');

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-02-23 11:21:25 |
+---------------------+
1 row in set (0.00 sec)

mysql> select UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1456197917 |
+------------------+
1 row in set (0.00 sec)
mysql> select UNIX_TIMESTAMP('2016-02-23 11:21:25');
+---------------------------------------+
| UNIX_TIMESTAMP('2016-02-23 11:21:25') |
+---------------------------------------+
|                            1456197685 |
+---------------------------------------+
1 row in set (0.00 sec)