2011-02-28 148 views
0

我正在使用CLSQL和MySQL。爲了給它一個帶有時間戳列類型的列,我必須將哪些關鍵字組合傳遞給create-tableCLSQL時間戳列類型

(create-table [foo] `(([bar] timestamp))) 

無法識別(它只是創建一個varchar 255列,如果您不指定列類型,這是默認值)。根據this reference page,wall-time應創建一個時間戳列,但只創建一個datetime(這與MySQL timestamp不同)。

另外,是否有比上面鏈接的更好的CLSQL列類型引用?

回答

1

爲什麼你不想使用日期時間?我發現的唯一區別是範圍。 看看here

The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. 

The TIMESTAMP data type has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. 

如果你看一下CLSQL的來源,例如here,你會看到

(defmethod database-get-type-specifier ((type (eql 'wall-time)) args database 
              (db-type (eql :mysql))) 
    (declare (ignore args database)) 
    "DATETIME") 

這意味着,一切都很好,你的代碼。你使用反引號或簡單引號是什麼引號?

+0

MySQL'TIMESTAMP'可以設置爲每次記錄爲'UPDATE'd時自動更新。 'DATETIME'必須明確設置。 – Inaimathi 2011-08-15 18:08:59