2012-12-26 49 views
0

我試圖通過幾年前使用早期版本的MySQL來運行這個表,並且它工作正常。看起來好像現在在最新版本的MySQL中存在時間戳(8)的問題。MySQL - 時間戳(8)替代?

CREATE TABLE top_hits (
    sid int(11), 
    ip varchar(20), 
    cdate timestamp(8) 
) 

我可以用什麼作爲第4行時間戳(8)的替代方法? YYYYMMDD

cdate timestamp(8) 

在此先感謝。

+0

你試過日期時間 –

+1

這是什麼問題? –

回答

3

在字段定義的(8)部分確實有任何影響:

  • (字節)列的大小
  • 存儲在它(1970的值的範圍,以中途2038 )
  • 你是否能夠在其中存儲

(8)一部分指定的小時,分​​鍾和秒顯示尺寸。當執行SELECT時,MySQL將返回時間戳as described here中日期的第一個XYZ部分。

所以,只需從創建表查詢中消除顯示部分即可。這將創建一個timestamp列。您可以使用MySQL函數或PHP格式化時間戳(例如截斷時間部分等)。

或者使用根本沒有存儲時間部分的DATE數據類型。

2

timestamp(N) 

句法被棄用的MySQL 5

你可以選擇您所選擇的日期的

SELECT date(ts)+0 from t; 

DATETIME數據類型需要storege時間戳的8字節需要4字節和日期時間需要更大範圍的日期

3

您需要DATE類型,它存儲年,月和日。

如果需要格式化輸出(YYYYMMDD),請使用DATE_FORMAT函數。