這可能是一個非常基本的問題,但我從來沒有創建過一個TIMESTAMP()
的表格,而且我對將參數放在什麼位置感到困惑。例如,在這裏:在MySql工作臺中將列設置爲時間戳?
我只是隨機把TIMESTAMP(20)
,但到底是什麼的20
作爲參數意味着在這裏?什麼應該放在這裏?
我GOOGLE了這個問題,但並沒有真正想出任何東西......無論如何,我是新來的SQL,所以任何幫助將不勝感激,謝謝!
這可能是一個非常基本的問題,但我從來沒有創建過一個TIMESTAMP()
的表格,而且我對將參數放在什麼位置感到困惑。例如,在這裏:在MySql工作臺中將列設置爲時間戳?
我只是隨機把TIMESTAMP(20)
,但到底是什麼的20
作爲參數意味着在這裏?什麼應該放在這裏?
我GOOGLE了這個問題,但並沒有真正想出任何東西......無論如何,我是新來的SQL,所以任何幫助將不勝感激,謝謝!
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並且它被接受,它將被忽略。)
也許這裏值得一提:分數第二支撐爲5.6.4存在: http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html –
答案已更新,以說明對MySQL版本> = 5.6.4的TIMESTAMP中小數秒的支持。 – spencer7593
該語法似乎來自4.1之前的舊版本的MySQL。它已從5.5完全刪除https://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html
因此,在這裏指定寬度沒有意義,因爲它可能會被忽略。你正在運行什麼版本?
這就是我的朋友的精度,如果你把例如(2)作爲參數,你會得到一個約會精確度如下:2015-12-29 00:00:00。 ,最大值爲6.
MySQL 5.7似乎支持這種語法。通過的論點是精確度。 TIMESTAMP(3)將允許毫秒精度。 6是允許的精度的最高數量。
很好的參考:https://dev.mysql.com/doc/refman/5.7/en/datetime.html –