重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
MySQL數據庫TIMESTAMP設置默認值的靈活運用,本次我們接著上次的內容介紹幾個MySQL數據庫TIMESTAMP設置默認值的幾個應用實例,希望能夠對您有所幫助。
創新互聯主營長子網站建設的網絡公司,主營網站建設方案,重慶APP軟件開發,長子h5重慶小程序開發公司搭建,長子網站營銷推廣歡迎長子等地區企業咨詢
#1查看表定義,可以看到b列有個屬性ON UPDATE CURRENT_TIMESTAMP,導致更新數據時,即便未涉及到該列,該列數據也被自動更新。另一方面,c列默認值是'0000-00-00 00:00:00',實際插入已經被自動賦值為current_timestamp。
?echo("當前時間為:".date("Y-m-d h:i:s")."br");$n=strtotime(date("Y-m-d h:i:s"));//用PHP時間戳轉化為數字 echo("用PHP時間戳轉化為數字:".$n)."br";$n=date("Y-m-d h:i:s",$n);//顯示的時候再轉化為時間:echo("顯示的時候再轉化為時間:".$n)."br";?
1. MySQL 獲得當前時間戳函數:current_timestamp, current_timestamp()
mysql select current_timestamp, current_timestamp();
+---------------------+---------------------+
| current_timestamp | current_timestamp() |
+---------------------+---------------------+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+---------------------+---------------------+
2. MySQL (Unix 時間戳、日期)轉換函數:
unix_timestamp(),
unix_timestamp(date),
from_unixtime(unix_timestamp),
from_unixtime(unix_timestamp,format)
下面是示例:
select unix_timestamp(); -- 1218290027
select unix_timestamp('2008-08-08'); -- 1218124800
select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800
select from_unixtime(1218290027); -- '2008-08-09 21:53:47'
select from_unixtime(1218124800); -- '2008-08-08 00:00:00'
select from_unixtime(1218169800); -- '2008-08-08 12:30:00'
select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008'
3. MySQL 時間戳(timestamp)轉換、增、減函數:
timestamp(date) -- date to timestamp
timestamp(dt,time) -- dt + time
timestampadd(unit,interval,datetime_expr) --
timestampdiff(unit,datetime_expr1,datetime_expr2) --
請看示例部分:
可以了解一下MySQL的時間戳(Timestamp)數據類型:
默認時間戳(Timestamp)類型的取值范圍為'1970-01-01 00:00:01' UTC至'2038-01-19 03:14:07' UTC,數據精確到秒級別,該取值范圍包含約22億個數值,因此在MySQL內部使用4個字節INT類型來存放時間戳數據:
1、在存儲時間戳數據時,先將本地時區時間轉換為UTC時區時間,再將UTC時區時間轉換為INT格式的毫秒值(使用UNIX_TIMESTAMP函數),然后存放到數據庫中。
2、在讀取時間戳數據時,先將INT格式的毫秒值轉換為UTC時區時間(使用FROM_UNIXTIME函數),然后再轉換為本地時區時間,最后返回給客戶端。
(Timestamp)時間戳列可以有四張組合定義,其含義分別為:
1、當字段定義為timestamp,表示該字段在插入和更新時都不會自動設置為當前時間。
2、當字段定義為timestamp DEFAULT CURRENT_TIMESTAMP,表示該字段僅在插入且未指定值時被賦予當前時間,再更新時且未指定值時不做修改。
3、當字段定義為timestamp ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入且未指定值時被賦值為"0000-00-00 00:00:00",在更新且未指定值時更新為當前時間。
4、當字段定義為timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入或更新時未指定值,則被賦值為當前時間。
通常存儲時間用datetime類型,現在很多系統也用int存儲時間,它們有什么區別?個人更喜歡使用int這樣對于日期計算時比較好哦,下面我們一起來看到底那種會好些。
int
(1).4個字節存儲,INT的長度是4個字節,存儲空間上比datatime少,int索引存儲空間也相對較小,排序和查詢效率相對較高一點點
(2)可讀性極差,無法直觀的看到數據,可能讓你很惱火
TIMESTAMP
(1)4個字節儲存
(2)值以UTC格式保存
(3)時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
(4)TIMESTAMP值不能早于1970或晚于2037