欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中CURRENT_TIMESTAMP時間戳的使用詳解

 更新時間:2022年03月29日 11:28:45   作者:夢?*?蝶  
這篇文章主要給大家介紹了關(guān)于MySQL中CURRENT_TIMESTAMP時間戳的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前言

最近在項(xiàng)目中發(fā)現(xiàn)一個小問題,數(shù)據(jù)被更改時,插入記錄和更新記錄的時間會被同步更新。設(shè)置的兩個時間create_time、update_time,按照預(yù)期來講,應(yīng)該是創(chuàng)建記錄的時候會同步更新create_time,update_time,而在更新記錄的時候,只有update_time會被同步更新。但實(shí)際情況卻是update記錄時,兩個time都會被同步更新。

在代碼中并沒有對時間進(jìn)行顯性的設(shè)置,對時間的維護(hù)是MySQL本身進(jìn)行管理的,所以就查看了一下之前同事創(chuàng)建表時的SQL。

通過SQL語句可以看出,create_time 和 update_time 設(shè)置的都是 DEFAULT CURRENT_TIMESTAMP,不管是新創(chuàng)建的記錄,還是更新原有的記錄,只要是有觸發(fā)的操作,這兩個時間就會被同步修改。所以要達(dá)到預(yù)期的效果,就需要修改這里了。問題根源就是SQL語句這里的設(shè)置。

解決:

把update_time的 DEFAULT CURRENT_TIMESTAMP后面再加上條件限制 ON UPDATE CURRENT_TIMESTAMP。這樣在更新記錄時,只有更新時間被修改,創(chuàng)建時間就是最初創(chuàng)建記錄的時間。

MySQL中的CURRENT_TIMESTAMP:

在創(chuàng)建時間字段的時候-----

① DEFAULT CURRENT_TIMESTAMP

表示當(dāng)插入數(shù)據(jù)的時候,該字段默認(rèn)值為當(dāng)前時間

② ON UPDATE CURRENT_TIMESTAMP

表示每次更新這條數(shù)據(jù)的時候,該字段都會更新成當(dāng)前時間

這兩個操作是mysql數(shù)據(jù)庫本身在維護(hù),所以可以根據(jù)這個特性來生成【創(chuàng)建時間】和【更新時間】兩個字段,且不需要代碼來維護(hù)。

如下:

CREATE TABLE `mytest` (
    `id` bigint NOT NULL AUTO_INCREMENT,
    `comments` varchar(255) DEFAULT '' COMMENT '內(nèi)容',
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
    `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

//如果想設(shè)置一個具體的默認(rèn)時間可以這樣:
CREATE TABLE `mytest2` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `comments` varchar(255) DEFAULT '' COMMENT '內(nèi)容',
  `create_time` timestamp DEFAULT '2020-12-12 12:12:12' COMMENT '創(chuàng)建時間',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

補(bǔ)充:mysql自帶的一些函數(shù)功能也是很強(qiáng)大的,這里整理了一下時間方面的

獲取當(dāng)前時間格式串:

#獲取當(dāng)前時間戳
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

獲取當(dāng)前或者某一時間的unix時間戳

#unix時間戳1970-01-01以來的秒數(shù)
unix_timestamp()
#同時還可以將某一時間格式串的秒數(shù)轉(zhuǎn)化出來
unix_timestamp('yyyy-mm-dd hh:ii:ss')

格式化時間串和格式化時間戳

#格式化時間串 date_format 與 time_format 為同一函數(shù) 輸入為 
date_format(now(), '%Y-%m-%d %T');
time_format(now(), '%H:%i:%s');
#格式化時間戳 將時間戳轉(zhuǎn)化為時間格式串
from_unixtime(unix_timestamp(), "%Y-%m-%d %T")

總結(jié)

到此這篇關(guān)于MySQL中CURRENT_TIMESTAMP時間戳使用的文章就介紹到這了,更多相關(guān)MySQL CURRENT_TIMESTAMP時間戳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

    這篇文章主要介紹了聊聊MySQL的COUNT(*)的性能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • mysql用戶創(chuàng)建與授權(quán)的簡單實(shí)例

    mysql用戶創(chuàng)建與授權(quán)的簡單實(shí)例

    MySQL等主流數(shù)據(jù)庫的最高權(quán)限一般是root用戶,有時我們需要提供數(shù)據(jù)庫的賬號和密碼以使用某些服務(wù),下面這篇文章主要給大家介紹了關(guān)于mysql用戶創(chuàng)建與授權(quán)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Mysqli基礎(chǔ)知識

    Mysqli基礎(chǔ)知識

    本文給大家講述的是Mysqli的基礎(chǔ)知識,非常的淺顯易懂,有需要的小伙伴就可以參考下。
    2015-07-07
  • MySQL查詢緩存優(yōu)化示例詳析

    MySQL查詢緩存優(yōu)化示例詳析

    MySQL的優(yōu)化指的是一個很大的系統(tǒng),面試的時候我之前是從sql的語句優(yōu)化方面去說的,這種優(yōu)化也有作用,不過是從邏輯方面去優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢緩存優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法

    在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法

    這篇文章主要介紹了在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法,適用于Debian系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • MySQL數(shù)據(jù)庫之?dāng)?shù)據(jù)表操作DDL數(shù)據(jù)定義語言

    MySQL數(shù)據(jù)庫之?dāng)?shù)據(jù)表操作DDL數(shù)據(jù)定義語言

    這篇文章主要介紹了MySQL數(shù)據(jù)庫之?dāng)?shù)據(jù)表操作DDL數(shù)據(jù)定義語言,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • mysql中使用date_add()函數(shù)講解

    mysql中使用date_add()函數(shù)講解

    這篇文章主要介紹了mysql中使用date_add()函數(shù)講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談MYSQL存儲過程和存儲函數(shù)

    淺談MYSQL存儲過程和存儲函數(shù)

    本文主要介紹了淺談MYSQL存儲過程和存儲函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MySQL將多條數(shù)據(jù)合并成一條的完整示例

    MySQL將多條數(shù)據(jù)合并成一條的完整示例

    我們在使用mysql的時候常會遇到合并的需求,下面這篇文章主要給大家介紹了關(guān)于MySQL將多條數(shù)據(jù)合并成一條的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • MYSQL數(shù)據(jù)庫查詢按日期分組統(tǒng)計(jì)詳細(xì)代碼

    MYSQL數(shù)據(jù)庫查詢按日期分組統(tǒng)計(jì)詳細(xì)代碼

    這篇文章主要給大家介紹了關(guān)于MYSQL數(shù)據(jù)庫查詢按日期分組統(tǒng)計(jì)的相關(guān)資料,按日期分組是指按照時間維度對數(shù)據(jù)進(jìn)行分類匯總統(tǒng)計(jì),常用于查詢分析具有時間屬性的數(shù)據(jù),例如訂單量、用戶活躍等,需要的朋友可以參考下
    2024-01-01

最新評論