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