前言:時間戳(timestamp)前言:時間戳(timestamp),一個能表示一份數據在某個特定時間之前已經存在的、 完整的、 可驗證的數據,通常是一個字符序列,唯一地標識某一刻的時間。使用數字簽名技術產生的數據, 簽名的對象包括了原始文件信息、 簽名參數、 簽名時間等信息。廣泛的運用在知識產權保護、 合同簽字、 金融帳務、 電子報價投標、 股票交易等方面。
一、MySQL中表示當前時間的方法: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME() LOCALTIMESTAMP LOCALTIMESTAMP()
二、關于TIMESTAMP和DATETIME的比較 一個完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分為兩部分:date部分和time部分,其中,date部分對應格式中的“YYYY-MM-DD”,time部分對應格式中的“HH:MM:SS[.fraction]”。對于date字段來說,它只支持date部分,如果插入了time部分的內容,它會丟棄掉該部分的內容,并提示一個warning。 datetime 占用8個字節 允許為空值,可以自定義值,系統不會自動修改其值。 實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.) 與時區無關(It has nothing to deal with the TIMEZONE and Conversion.) 可以在指定datetime字段的值的時候使用now()變量來自動插入系統的當前時間。 結論:datetime類型適合用來記錄數據的原始的創建時間,因為無論你怎么更改記錄中其他字段的值,datetime字段的值都不會改變,除非你手動更改它。
timestamp 占用4個字節 允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。 TIMESTAMP值不能早于1970或晚于2037。這說明一個日期,例如’1968-01-01’,雖然對于DATETIME或DATE值是有效的,但對于TIMESTAMP值卻無效,如果分配給這樣一個對象將被轉換為0。 4.值以UTC格式保存( it stores the number of milliseconds)
5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。 默認值為CURRENT_TIMESTAMP(),其實也就是當前的系統時間。 數據庫會自動修改其值,所以在插入記錄時不需要指定timestamp字段的名稱和timestamp字段的值,你只需要在設計表的時候添加一個timestamp字段即可,插入后該字段的值會自動變為當前系統時間。 默認情況下以后任何時間修改表中的記錄時,對應記錄的timestamp值會自動被更新為當前的系統時間。 如果需要可以設置timestamp不自動更新。通過設置DEFAULT CURRENT_TIMESTAMP 可以實現。 TIMESTAMP和DATETIME的相同點:
兩者都可用來表示YYYY-MM-DD HH:MM:SS[.fraction]類型的日期。 TIMESTAMP和DATETIME的不同點: 兩者的存儲方式不一樣 對于TIMESTAMP,它把客戶端插入的時間從當前時區轉化為UTC(世界標準時間)進行存儲。查詢時,將其又轉化為客戶端當前時區進行返回。 而對于DATETIME,不做任何改變,基本上是原樣輸入和輸出。 兩者所能存儲的時間范圍不一樣 timestamp所能存儲的時間范圍為:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。 datetime所能存儲的時間范圍為:‘1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。 TIMESTAMP的變體 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在創建新記錄和修改現有記錄的時候都對這個數據列刷新 2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為當前時間,但以后修改時,不再刷新它 3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為0,以后修改時刷新它 4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP 在創建新記錄的時候把這個字段設置為給定值,以后修改時刷新它 *當指定日期值時,當心某些缺陷: * 1、允許作為字符串指定值的寬松格式能被欺騙。例如,,因為“:”分隔符的使 用,值’10:11:12’可能看起來像時間值,但是如果在一個日期中使用,上下文將作 為年份被解釋成’2010-11-12’。值’10:45:15’將被變換到’0000-00-00’,因為’45’ 不是一個合法的月份。 2、以2位數字指定的年值是模糊的,因為世紀是未知的。MySQL使用下列規則 解釋2位年值: 在00-69范圍的年值被變換到2000-2069。 在范圍70-99的年值被變 換到1970-1999。 來源:https://www./content-2-870251.html
|