Есть ли способ создать таблицу в sqlite3, которая имеет столбец datetime, который по умолчанию имеет значение "сейчас"?
Следующий оператор возвращает синтаксическую ошибку:
create table tbl1(id int primary key, dt datetime default datetime('now'));
Обновить. Здесь правильная ddl любезность Sky Sanders:
create table tbl1(id int primary key, dt datetime default current_timestamp);
Попробуйте следующее:
create table tbl1(id int primary key, dt datetime default current_timestamp);
Фон:
Ограничение DEFAULT указывает значение по умолчанию, которое следует использовать при выполнении ВСТАВИТЬ. Значение может быть NULL, a строковая константа, число или постоянное выражение, заключенное в круглые скобки. Значение по умолчанию может также является одним из специальных независимые от случая ключевые слова CURRENT_TIME, CURRENT_DATE или CURRENT_TIMESTAMP. Если значение равно NULL, строковая константа или номер, это вставляется в столбец всякий раз выражение INSERT, которое не указать значение для столбца казнены. Если значение равно CURRENT_TIME, CURRENT_DATE или CURRENT_TIMESTAMP, затем текущий Дата и/или время UTC вставляются в столбцы. Для CURRENT_TIME формат HH: MM: SS. Для CURRENT_DATE, YYYY-MM-DD. Формат для CURRENT_TIMESTAMP - "ГГГГ-ММ-ДД HH: MM: SS".
current_timestamp
точностью до секунды, если вы хотите, чтобы по default (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
использовались миллисекунды default (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
.
... default (datetime(current_timestamp))
В скобках должно быть указано выражение default
. Эта форма полезна, если вы хотите выполнить арифметику даты, используя функции и модификаторы даты и времени SQLite.
CURRENT_TIMESTAMP
- это буквальное значение, подобное 'mystring'
колонного ограничение:
буквальным-значение:
datetime('now')
используемый OP - это expr
, поэтому ему нужны скобки.
вы можете использовать следующий запрос для использования текущего значения даты в таблице
create table tablename (date_field_name Created_on default CURRENT_DATE);