网站地图    收藏   

主页 > 后端 > php资料库 >

MySQL中datetime类型与timestamp类型的区别_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 在平常中,我们总会有这样的需求,在插入或者修改时插入当前系统时间,有些童鞋的做法是把时间字段类型设置为datetime,然后在PHP端用date函数拼接SQL语句,或者使用NOW()函数。其实在...

在平常中,我们总会有这样的需求,在插入或者修改时插入当前系统时间,有些童鞋的做法是把时间字段类型设置为datetime,然后在PHP端用date函数拼接SQL语句,或者使用NOW()函数。其实在MySQL中,datetime只是表示数据类型为YYYY-mm-dd HH:ii:ss格式,而timestamp类型则表示当前系统时间,无需写值。

 

我们创建一个b表,字段t1类型为datetime,t2类型为timestamp

mysql> create table b(t1 datetime,t2 timestamp);                   
Query OK, 0 rows affected (0.01 sec)
mysql> desc b;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| t1    | datetime  | YES  |     | NULL              |                             |
| t2    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
2 rows in set (0.00 sec)

我们插入一条t1和t2都是null空值的记录

mysql> insert into b values(null,null);
Query OK, 1 row affected (0.03 sec)

看看结果

mysql> select * from b;
+------+---------------------+
| t1   | t2                  |
+------+---------------------+
| NULL | 2012-07-04 13:31:11 |
+------+---------------------+
1 row in set (0.00 sec)

我们发现,t1的值为NULL,t2的值为执行插入语句时的系统时间。所以如果有增改记录更新当前系统时间的可以把字段类型设置为timestamp,这样在SQL语句里就不需要再为该字段赋值即可完成插入当前系统时间的操作。

最后提示一下:一个表中只能有一个字段的类型为timestamp类型。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论