我在MySQL上使用CLSQL。我必须传递给create-table
哪些关键字组合才能为它提供带有timestamp列类型的列?
(create-table [foo] `(([bar] timestamp)))
无法识别(它只会创建一个varchar 255列,如果不指定列类型,则为默认值)。根据this reference page,
wall-time
应该创建一个timestamp列,而只是创建一个datetime
(与MySQL timestamp
不同)。另外,是否有比我上面链接的更好的CLSQL列类型引用?
最佳答案
您为什么不想使用日期时间?我发现的唯一区别是范围。
看看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")
这意味着您的代码一切都很好。您使用反引号`还是简单引号\'引用什么?
关于mysql - CLSQL时间戳记列类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5147296/