2015-06-02 106 views
9

這可能是一個非常基本的問題,但我從來沒有創建過一個TIMESTAMP()的表格,而且我對將參數放在什麼位置感到困惑。例如,在這裏:在MySql工作臺中將列設置爲時間戳?

enter image description here

我只是隨機把TIMESTAMP(20),但到底是什麼的20作爲參數意味着在這裏?什麼應該放在這裏?

我GOOGLE了這個問題,但並沒有真正想出任何東西......無論如何,我是新來的SQL,所以任何幫助將不勝感激,謝謝!

+0

很好的參考:https://dev.mysql.com/doc/refman/5.7/en/datetime.html –

回答

7

EDIT

在MySQL 5.6.4的,數據類型TIMESTAMP(n)指定的精度分數秒n(0至6)十進制數。

在MySQL 5.6之前,MySQL不支持作爲TIMESTAMP數據類型的一部分存儲的小數秒。

參考:https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html


我們並不需要在一個TIMESTAMP指定長度修改。我們可以自己指定TIMESTAMP

但請注意,表中定義的第一個TIMESTAMP列可以進行自動初始化和更新。例如:

create table foo (id int, ts timestamp, val varchar(2)); 

show create table foo; 

CREATE TABLE `foo` (
`id` INT(11) DEFAULT NULL, 
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`val` VARCHAR(2) DEFAULT NULL 
) 

什麼在以下數據類型的括號去依賴於數據類型是什麼,但對於某些數據類型,它是一個長度修飾符。

對於某些數據類型,長度修飾符會影響可以存儲的值的最大長度。例如,VARCHAR(20)最多允許存儲20個字符。並且DECIMAL(10,6)允許小數點前六位和後六位的數字值,有效範圍爲-9999.999999至9999.999999。

對於其他類型,長度修飾符,它不會影響可以存儲的值的範圍。例如,INT(4)INT(10)都是整數,並且都可以存儲整數數據類型允許的全部值。

那種長度修飾符在這種情況下所做的只是提供信息。它基本上指定了推薦的顯示寬度。客戶端可以利用它來確定在一行中保留多少空間來顯示列中的值。客戶不必這樣做,但該信息可用。

EDIT

甲長度修改不再接受的用於將 TIMESTAMP數據類型。 (如果你正在運行一個真正的舊版本的MySQL並且它被接受,它將被忽略。)

+3

也許這裏值得一提:分數第二支撐爲5.6.4存在: http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html –

+0

答案已更新,以說明對MySQL版本> = 5.6.4的TIMESTAMP中小數秒的支持。 – spencer7593

4

這就是我的朋友的精度,如果你把例如(2)作爲參數,你會得到一個約會精確度如下:2015-12-29 00:00:00。 ,最大值爲6.

相關問題