MySQL数据库中有datetime与timestamp两种日期时间型数据类型,其中timestamp可以用timestamp(n)来表示年月日时分秒的取值精度,如果n=14则完整匹配于datetime的精度,那为什么还需要datetime这种类型呢?我做过试验,timestamp可以跟日期函数和时间函数直接比较和判断,比如timestamp1<dateadd(cur_date(), interval 1 month)是完全成立的。timestamp(14)型数据列被修改为date时会被取整(时分秒丢失),反之会添零。而与datetime型则没有任何问题,完全兼容,没搞懂datetime的存在意义?!原来用惯了datetime,因为sql server的原因,可是MySQL数据库不支持datetime列的默认值的函数设置,如常用的now()。据网络上很多网友说,MySQL的默认值不允许设为函数。SQL server用now, Oracle用sysdate,可是MySQL用datetime只要用触发器了,为了常用的createdate列需要维护一堆触发器,真不合适。用timestamp呢,它会自动添加默认值为系统当前时间,当然只对表里的第一个timestamp列,不过大多数时候够了。