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列,不過大多數時候夠了。
本文轉自 dannyy1026 51CTO博客,原文鏈接: