⏱ DATETIME 'now' по локальному времени в SQLite
DATETIME в SQLite
В базах данных часто используется дефолтные значения,
которые подставляются автоматически, если в операции INSERT
значение не указано.
Например у тебя есть таблица, в которой поле join_date
имеет тип данных DATETIME
, значение по умолчанию которого DATETIME('now')
.
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_name TEXT NOT NULL,
join_date DATETIME NOT NULL DEFAULT ( DATETIME('now' ) )
);
В случает добавления записи в таблицу в поле join_date
автоматически будет подставлено текущее время.
В документации SQLite написано, что функция datetime()
возращает значение
в виде текста в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
.
The
datetime()
function returns the date and time as text in their same formats: YYYY-MM-DD HH:MM:SS.
Значения даты и времени могут быть сохранены в трех форматах:
- текст в подмножестве формата ISO-8601
- числа представляющие Юлианский день
- числа представляющие количество секунд с момента (или до) 1970-01-01 00:00:00 UTC (временная метка unix).
Время во всех форматах представляется в UTC.
Модификаторы
Функция datetime()
имеет следующий синтаксис.
datetime(value, modifier)
В данном случает в качетсве значения (value
) используется now
.
Список всех значений можно посмотреть на сайте SQLite:
https://www.sqlite.org/lang_datefunc.html#time_values.
Для того, чтобы функция вставляла в запись значение даты,
которое соответсвует локальному времени, необходим модификатор localtime
.
CREATE TABLE IF NOT EXISTS users(
join_date DATETIME NOT NULL DEFAULT ( DATETIME('now', 'localtime') )
);
Список всех модификаторах доступен по этой ссылке: https://www.sqlite.org/lang_datefunc.html#modifiers.