localtime datenow sqlite
This commit is contained in:
parent
36322ddd89
commit
c643d230bd
63
content/posts/2023/sql/sqlite-datetime-now.md
Normal file
63
content/posts/2023/sql/sqlite-datetime-now.md
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
title: "⏱ DATETIME 'now' по локальному времени в SQLite"
|
||||||
|
date: 2023-01-23T22:50:05+03:00
|
||||||
|
draft: false
|
||||||
|
tags: [sql, tips]
|
||||||
|
---
|
||||||
|
|
||||||
|
## DATETIME в SQLite
|
||||||
|
|
||||||
|
В базах данных часто используется дефолтные значения,
|
||||||
|
которые подставляются автоматически, если в операции `INSERT`
|
||||||
|
значение не указано.
|
||||||
|
|
||||||
|
Например у тебя есть таблица, в которой поле `join_date`
|
||||||
|
имеет тип данных `DATETIME`, значение по умолчанию которого `DATETIME('now')`.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
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()` имеет следующий синтаксис.
|
||||||
|
|
||||||
|
```c++
|
||||||
|
datetime(value, modifier)
|
||||||
|
```
|
||||||
|
|
||||||
|
В данном случает в качетсве значения (`value`) используется `now`.
|
||||||
|
Список всех значений можно посмотреть на сайте SQLite:
|
||||||
|
[https://www.sqlite.org/lang_datefunc.html#time_values](https://www.sqlite.org/lang_datefunc.html#time_values).
|
||||||
|
|
||||||
|
Для того, чтобы функция вставляла в запись значение даты,
|
||||||
|
которое соответсвует локальному времени, необходим модификатор `localtime`.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE IF NOT EXISTS users(
|
||||||
|
join_date DATETIME NOT NULL DEFAULT ( DATETIME('now', 'localtime') )
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Список всех модификаторах доступен по этой ссылке:
|
||||||
|
[https://www.sqlite.org/lang_datefunc.html#modifiers](https://www.sqlite.org/lang_datefunc.html#modifiers).
|
Loading…
Reference in New Issue
Block a user