⏱ 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.