Возможно ли в базе данных sqlite создать таблицу со столбцом метки времени по умолчанию DATETIME('now')
?
Как это:
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
t TIMESTAMP DEFAULT DATETIME('now')
);
Это дает ошибку ... Как решить?
в соответствии с др. hipp в недавнем сообщении списка:
источник
CURRENT_TIMESTAMP
поэтому я создал свою собственную функцию в C, чтобы возвращать количество микросекунд с начала эпохи, и я рад, что могу использовать это какDEFAULT
сейчас.Это просто синтаксическая ошибка, вам нужно скобки:
(DATETIME('now'))
Если вы посмотрите на документацию , вы заметите круглые скобки, которые добавляются вокруг опции 'expr' в синтаксисе.
источник
Это полный пример, основанный на других ответах и комментариях к вопросу. В этом примере отметка времени (
created_at
-column) сохраняется как часовой пояс UTC эпохи Unix и преобразуется в местный часовой пояс только при необходимости.Использование Unix Epoch экономит место для хранения - 4 байта целое число против строки 24 байта при хранении в виде строки ISO8601, см. Типы данных . Если 4 байта недостаточно, это можно увеличить до 6 или 8 байтов.
Сохранение метки времени в часовом поясе UTC позволяет удобно отображать разумное значение для нескольких часовых поясов.
Версия SQLite 3.8.6, которая поставляется с Ubuntu LTS 14.04.
Местное время верно, так как я нахожусь в UTC + 2 DST на момент запроса.
источник
Может быть лучше использовать тип REAL, чтобы сэкономить место для хранения.
Цитата из 1.2 раздела Типы данных в SQLite версии 3
см. столбец-ограничение .
И вставить строку, не предоставляя никакого значения.
источник
integer(n)
где можно выбрать подходящее значение дляn
.Это ошибка синтаксиса, потому что вы не написали круглые скобки
если ты пишешь
(Даты и времени ( 'теперь', 'LocalTime'))
источник
Этот альтернативный пример хранит местное время как целое число, чтобы сохранить 20 байтов. Работа выполняется в полях default, Update-trigger и View. strftime должен использовать «% s» (одинарные кавычки), потому что «% s» (двойные кавычки) вызвал ошибку «Не константа».
источник