Тип столбца временной метки CLSQL

Я использую CLSQL с MySQL. Какую комбинацию ключевых слов я должен передать create-table, чтобы дать ему столбец с типом столбца с меткой времени?

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

не распознается (он просто создает столбец varchar 255, который используется по умолчанию, если вы не укажете тип столбца). Согласно этой справочной странице, wall-time должен создать столбец меток времени, но просто создает datetime (что не то же самое, что MySQL timestamp).

Кроме того, есть ли лучшая ссылка на тип столбца CLSQL, чем та, на которую я ссылался выше?


person Inaimathi    schedule 28.02.2011    source источник


Ответы (1)


Почему вы не хотите использовать datetime? Единственная разница, которую я нашел, это диапазон. Посмотрите здесь

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, например здесь вы увидите

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

Это означает, что с вашим кодом все в порядке. Какую цитату вы используете, обратную кавычку или простую кавычку?

person Levenson    schedule 13.08.2011
comment
MySQL TIMESTAMP можно настроить на автоматическое обновление каждый раз, когда его запись UPDATEd. DATETIME должен быть установлен явно. - person Inaimathi; 15.08.2011