SQLite - Дата и время

Здравствуйте,野心勃勃的程序员们! Сегодня мы окунемся в fascinирующий мир дат и времен в SQLite. Как ваш доброжелательный сосед-компьютерный учитель, я поведу вас через это путешествие с множеством примеров и объяснений. Так что, пристегнитесь и начнем!

SQLite - Date & Time

Строки времени

В SQLite даты и времена обычно хранятся в виде текстовых строк. Это может показаться странным сначала, но на самом деле это довольно гибко и легко работать. Давайте рассмотрим некоторые_common форматы:

Формат ISO8601

Самый распространенный формат - ISO8601, который выглядит так:

ГГГГ-ММ-ДД ЧЧ:ММ:СС

Например:

'2023-06-15 14:30:00'

Это означает 15 июня 2023 года в 2:30 дня.

Другие принятые форматы

SQLite очень прощает, когда дело доходит до форматов дат и времен. Вот некоторые другие принятые форматы:

ГГГГ-ММ-ДД
ГГГГ-ММ-ДД ЧЧ:ММ
ГГГГ-ММ-ДД ЧЧ:ММ:СС.ССС
ГГГГ-ММ-ДДТЧЧ:ММ
ГГГГ-ММ-ДДТЧЧ:ММ:СС
ГГГГ-ММ-ДДТЧЧ:ММ:СС.ССС
ЧЧ:ММ
ЧЧ:ММ:СС
ЧЧ:ММ:СС.ССС

Давайте попробуем пример:

CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);

INSERT INTO events (event_name, event_date) VALUES
(' торжеество по случаю дня рождения', '2023-07-01'),
(' Кинovýчér', '2023-07-15 20:00'),
('Утренняя пробежка', '06:30');

SELECT * FROM events;

Это создаст таблицу с различными форматами дат и времен. quite cool, не так ли?

Модификаторы

Теперь давайте поговорим о модификаторах. Это специальные ключевые слова, которые позволяют нам манипулировать датами и временем. Это как магические палочки для наших строк времени!

Общие модификаторы

Вот таблица общих модификаторов:

Модификатор Описание
+N days Добавляет N дней к дате
-N days Убирает N дней из даты
start of month Изменяет дату на первый день месяца
start of year Изменяет дату на первый день года
weekday N Изменяет дату на следующий день, где день недели равен N (0=Воскресенье, 1=Понедельник и т.д.)

Давайте увидим их в действии:

SELECT
date('now') AS today,
date('now', '+1 day') AS tomorrow,
date('now', '-1 month') AS last_month,
date('now', 'start of month') AS month_start,
date('now', 'weekday 1') AS next_monday;

Этот запрос покажет вам текущую дату, дату на tomorrow, дату на месяц назад, начало месяца и дату следующего понедельника. quite handy, не так ли?

Форматы

Форматы - это как стилисты в мире дат и времен. Они помогают нам представить наши даты и времена по-разному.

Функция strftime()

Основная функция, которую мы используем для форматирования - strftime(). Она означает "строка формат времени". Вот базовая грамматика:

strftime(формат, строка-время, модификаторы...)

Давайте рассмотрим некоторые_common спецификаторы формата:

Спецификатор Описание
%Y Год (4 цифры)
%m Месяц (01-12)
%d День месяца (01-31)
%H Час (00-23)
%M Минута (00-59)
%S Секунда (00-59)
%w День недели (0-6 с воскресенья=0)

Теперь давайте все это соберем вместе:

SELECT
strftime('%Y-%m-%d', 'now') AS date_only,
strftime('%H:%M', 'now') AS time_only,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS date_time,
strftime('%w', 'now') AS day_of_week,
strftime('%Y-%m-%d', 'now', '+1 month') AS next_month;

Этот запрос покажет вам текущую дату, текущее время, текущую дату и время, день недели (0-6) и дату через месяц.

Забавный пример

Давайте закончим забавным примером. Представьте, что вы планируете вечеринку, и вам нужно знать, какой день недели будет через 100 дней:

SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Sunday'
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
WHEN 3 THEN 'Wednesday'
WHEN 4 THEN 'Thursday'
WHEN 5 THEN 'Friday'
WHEN 6 THEN 'Saturday'
END AS party_day;

Этот запросtell вам дату через 100 дней и какой день недели это будет. Perfect для планирования вечеринок!

И вот мы и добрались до этого,folks! Мы совершили путешествие через землю дат и времен в SQLite. Помните, что практика делает perfect, так что не бойтесь экспериментировать с этими функциями. Before you know it, вы станете магом дат и времен! Happy coding!

Credits: Image by storyset