1. 程式人生 > >sql:DateTime,Timestamp,Time和Date有什麼區別?

sql:DateTime,Timestamp,Time和Date有什麼區別?

場景:

用Mysql出現時間問題Incorrect datetime value: '' for column 'createtime',查明原因資料庫中用的是TIMESTAMP格式,時間為1970-2038年範圍之外的日期無法入庫。

解決:使用datetime欄位型別

總結如下:

使用MySQL作為一個例子(如果沒有其他原因,因為它是最流行的),你有DATE,DATETIME,TIME和TIMESTAMP列資料型別; 就像你有CHAR,VARCHAR,FLOAT和INTEGER。

DATE只儲存一個日期:年月日

TIME只儲存一天的時間:時分秒

DATETIME儲存日期+時間,DATETIME被格式化為YYYY-MM-DD HH:MM:SS,有效範圍從1000年到9999年(以及其間的所有內容)。精確到時分秒,用於做時間戳。8個位元組儲存。

TIMESTAMP :從資料庫中獲取時TIMESTAMP 看起來是相似的,但它實際上只是一個unix時間戳的前沿,其有效範圍從1970年到2038年。

這裡除了資料庫引擎內部的各種內建函式之外,還有儲存空間,由於DATETIME每年,每月,每天,每小時,每分鐘和每秒都儲存一個數字,所以總共消耗了8個位元組。TIMESTAMP,自1970-01-01以來的秒數,它使用4個位元組。

最後,它歸結為你需要你的日期/時間列做什麼。

需要在1970年以前或2038年以後儲存日期和時間,使用DATETIME,但需要擔心資料庫的大小。

在這個時間1970-2038範圍內?使用TIMESTAMP。