教你如何使用MySQL中CURRENT_TIMESTAMP時間戳
導讀 |
這篇文章主要給大家介紹了關於MySQL中CURRENT_TIMESTAMP時間戳的相關資料,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
|
最近在專案中發現一個小問題,資料被更改時,插入記錄和更新記錄的時間會被同步更新。設定的兩個時間create_time、update_time,按照預期來講,應該是建立記錄的時候會同步更新create_time,update_time,而在更新記錄的時候,只有update_time會被同步更新。但實際情況卻是update記錄時,兩個time都會被同步更新。
在程式碼中並沒有對時間進行顯性的設定,對時間的維護是MySQL本身進行管理的,所以就檢視了一下之前同事建立表時的SQL。
透過SQL語句可以看出,create_time 和 update_time 設定的都是 DEFAULT CURRENT_TIMESTAMP,不管是新建立的記錄,還是更新原有的記錄,只要是有觸發的操作,這兩個時間就會被同步修改。所以要達到預期的效果,就需要修改這裡了。問題根源就是SQL語句這裡的設定。
把update_time的 DEFAULT CURRENT_TIMESTAMP後面再加上條件限制 ON UPDATE CURRENT_TIMESTAMP。這樣在更新記錄時,只有更新時間被修改,建立時間就是最初建立記錄的時間。
MySQL中的CURRENT_TIMESTAMP:
在建立時間欄位的時候-----
① DEFAULT CURRENT_TIMESTAMP
表示當插入資料的時候,該欄位預設值為當前時間
② ON UPDATE CURRENT_TIMESTAMP
表示每次更新這條資料的時候,該欄位都會更新成當前時間
這兩個操作是mysql資料庫本身在維護,所以可以根據這個特性來生成【建立時間】和【更新時間】兩個欄位,且不需要程式碼來維護。
如下:
CREATE TABLE `mytest` ( `id` bigint NOT NULL AUTO_INCREMENT, `comments` varchar(255) DEFAULT '' COMMENT '內容', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; //如果想設定一個具體的預設時間可以這樣: CREATE TABLE `mytest2` ( `id` bigint NOT NULL AUTO_INCREMENT, `comments` varchar(255) DEFAULT '' COMMENT '內容', `create_time` timestamp DEFAULT '2020-12-12 12:12:12' COMMENT '建立時間', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
獲取當前時間格式串:
#獲取當前時間戳 current_timestamp() yyyy-mm-dd hh:ii:ss now() yyyy-mm-dd hh:ii:ss curdate() yyyy-mm-dd current_date() curtime() hh:ii:ss current_time()
提取date各個欄位
#提取date各個欄位 date('yyyy-mm-dd hh:ii:ss') yyyy-mm-dd year('yyyy-mm-dd hh:ii:ss') yyyy month('yyyy-mm-dd hh:ii:ss') mm day('yyyy-mm-dd hh:ii:ss') dd
提取time各個欄位
#提取time各個欄位 time('yyyy-mm-dd hh:ii:ss') hh:ii:ss hour('yyyy-mm-dd hh:ii:ss') hh minute('yyyy-mm-dd hh:ii:ss') ii second('yyyy-mm-dd hh:ii:ss') ss
獲取當前或者某一時間的unix時間戳
#unix時間戳1970-01-01以來的秒數 unix_timestamp() #同時還可以將某一時間格式串的秒數轉化出來 unix_timestamp('yyyy-mm-dd hh:ii:ss')
格式化時間串和格式化時間戳
#格式化時間串 date_format 與 time_format 為同一函式 輸入為 date_format(now(), '%Y-%m-%d %T'); time_format(now(), '%H:%i:%s'); #格式化時間戳 將時間戳轉化為時間格式串 from_unixtime(unix_timestamp(), "%Y-%m-%d %T")
到此這篇關於MySQL中CURRENT_TIMESTAMP時間戳使用的文章就介紹到這了。
原文來自: https://www.linuxprobe.com/mysql-current-timestamp.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2887477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL時間戳、時間MySql時間戳
- Excel中時間戳轉換時間Excel時間戳
- MySQL時間戳轉成日期格式MySql時間戳
- MySQL字串轉時間戳查詢MySql字串時間戳
- MySQL中的CURRENT_TIMESTAMPMySql
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- 獲取時間戳,幾個時間點的時間戳時間戳
- 如何讓時間戳的15分鐘前使用BigQuery ?時間戳
- MySQL 時間戳的 獲取 & 轉換為特定時間格式MySql時間戳
- mysql獲取今天、昨天0點時間戳MySql時間戳
- JavaScript 時間戳JavaScript時間戳
- kafka時間戳Kafka時間戳
- C# 時間戳轉時間C#時間戳
- 時間型別和時間戳型別時間戳
- 兩個時間戳的時間差時間戳
- 時間戳轉化為時間格式時間戳
- 分享 8 個 Laravel 模型時間戳使用技巧Laravel模型時間戳
- PHP時間戳 strtotime()使用方法和技巧PHP時間戳
- 如何用Java獲取當前時間戳?Java時間戳
- python中的時間轉換,秒級時間戳轉string,string轉時間Python時間戳
- 如何將Python時間戳轉換為時間?Python學習教程!Python時間戳
- Mysql - 如何決定用 datetime、timestamp、int 哪種型別儲存時間戳?MySql型別時間戳
- 如何使用 System.Text.Json 序列化 DateTimeOffset 為 Unix 時間戳JSON時間戳
- 【時間戳轉普通時間格式的方法】時間戳
- 格式化時間 戳
- Unix 時間戳與日期時間戳
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- C++中UNIX時間戳與日期互轉C++時間戳
- VNPY2 中凌晨0點時間戳的處理問題,和夜盤資料時間戳分析時間戳
- Timestamp-時間戳轉換時間戳
- 時間戳效能最佳化時間戳
- [20191226]dmesg與時間戳.txt時間戳
- PostgreSQL自動更新時間戳SQL時間戳
- 《Lua-in-ConTeXt》05:時間戳Context時間戳
- Mongoose無法更新時間戳Go時間戳
- 時間戳與時間字串的多時區轉換時間戳字串
- js獲取某時間的當天0點時間戳 與某時間的當週週一0點時間戳JS時間戳