CLSQL时间戳列类型

时间:2011-02-28 20:37:43

标签: mysql common-lisp sbcl clsql

我正在使用带有MySQL的CLSQL。我必须将哪些关键字组合传递给create-table才能为其提供包含时间戳列类型的列?

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

无法识别(它只创建一个varchar 255列,如果不指定列类型,则为默认列)。根据{{​​3}},wall-time应该创建一个时间戳列,但只创建一个datetime(与MySQL timestamp不同)。

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

1 个答案:

答案 0 :(得分: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")

这意味着您的代码一切正常。什么引用你使用反引号或简单引用?