Дата и время важны, они помогают поддерживать порядок и являются неотъемлемым аспектом любой операции с программным обеспечением.
Эффективная работа с ними в базе данных иногда может показаться запутанной, независимо от того, работает ли она в разных часовых поясах, добавление / вычитание дат и другие операции.
Изучите различные доступные функции MySQL для простой обработки и управления датами / временем в вашей базе данных.
Работа с часовыми поясами
Чтобы сохранить стандартизацию, вы должны работать только с датой и временем в часовом поясе UTC. Каждый раз, когда вы устанавливаете соединение с базой данных MySQL, вы должны переключать часовой пояс на UTC, что можно сделать с помощью следующего оператора SQL:
УСТАНОВИТЬ TIME_ZONE = '+0: 00'
Поскольку все даты теперь будут сохраняться в формате UTC, вы всегда знаете, с чем работаете, что упрощает и упрощает работу.
При необходимости вы легко можете преобразовать часовой пояс любого значения даты и времени / метки времени с помощью удобного
CONVERT_TZ () Функция MySQL. Сначала вам нужно знать смещение, например, PST на западном побережье Северной Америки - это UTC -08: 00, поэтому вы можете использовать:PolyTime, новое приложение от MakeUseOf, позволяет легко сравнивать часовые пояса по всему миру. Вот что с ним можно сделать и как это работает.
ВЫБРАТЬ CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');
Это приводит к 2021-02-04 13:47:23 что совершенно правильно. Три аргумента, переданные в CONVERT_TZ () сначала являются датой и временем / меткой времени, с которой вы начинаете (используйте now () для текущего времени), вторым всегда будет '+0:00' так как все даты в базе данных принудительно указаны в формате UTC, и последнее - это смещение, в которое мы хотим преобразовать дату.
Добавить / вычесть даты
Часто вам нужно прибавлять к датам или вычитать из них, например, если вам нужно получить записи, сделанные неделю назад, или запланировать что-нибудь через месяц.
К счастью, у MySQL есть отличные DATE_ADD () и DATE_SUB () функции, делающие эту задачу чрезвычайно простой. Например, вы можете вычесть две недели из текущей даты с помощью оператора SQL:
ВЫБЕРИТЕ DATE_SUB (сейчас (), интервал 2 недели);
Если вместо этого вы хотите добавить три дня к существующей метке времени, вы должны использовать:
SELECT DATE_ADD ('2021-02-07 11:52:06', интервал 3 дня);
Обе функции работают одинаково, первый аргумент - это метка времени, с которой вы начинаете, а второй аргумент - это интервал, который нужно добавить или вычесть. Второй аргумент всегда форматируется одинаково, начиная со слова интервал за которым следует числовое значение и сам интервал, который может быть любым из следующих: секунда, минута, час, день, неделя, месяц, квартал, год.
В качестве другого примера, если вы хотите получить все входы в систему, которые произошли за последние 34 минуты, вы можете использовать оператор SQL, такой как:
SELECT * FROM logins WHERE login_date> = DATE_SUB (now (), interval 45 минут);
Как видите, при этом будут извлечены все записи из логины таблица с датой входа в систему, превышающей текущее время минус 45 минут, или, другими словами, последние 45 минут.
Узнайте разницу между датами
Иногда вам нужно узнать, сколько времени прошло между двумя свиданиями. Вы можете легко получить количество дней между двумя разными датами с помощью РАЗНДАТ функция, такая как приведенный ниже оператор SQL:
ВЫБРАТЬ РАЗНДАТ (сейчас (), '2020-12-15');
В РАЗНДАТ Функция принимает два аргумента, оба из которых являются метками даты и времени, и дает количество дней между ними. В приведенном выше примере будет показано количество дней, прошедших с 15 декабря 2020 года до сегодняшнего дня.
Чтобы получить количество секунд между двумя датами, TO_SECONDS () функция может пригодиться, например:
ВЫБРАТЬ TO_SECONDS (сейчас ()) - TO_SECONDS ('2021-02-05 11:56:41');
Это приведет к количеству секунд между двумя указанными датами.
Извлечь сегменты по датам
Существуют различные функции MySQL, которые позволяют легко извлекать определенные сегменты из дат, например, если вам нужен только месяц, день года или час. Вот несколько примеров таких функций:
ВЫБЕРИТЕ МЕСЯЦ ('2021-02-11 15:27:52');
ВЫБЕРИТЕ ЧАС (сейчас ());
ВЫБЕРИТЕ DAYOFYEAR ('2021-07-15 12:00:00');
Приведенные выше операторы SQL приведут к 02, текущий час и 196 поскольку 15 сентября - 196-й день в году. Вот список всех доступных функций извлечения даты, каждая из которых принимает только один аргумент, дата извлекается из:
- ВТОРОЙ()
- МИНУТА ()
- ЧАС()
- ДЕНЬ()
- WEEK () - Число 0 - 52, определяющее неделю в году.
- МЕСЯЦ()
- КВАРТАЛ () - Число 1 - 4, определяющее квартал года.
- ГОД()
- DAYOFYEAR () - день года (например. 15 сентября = 196).
- LAST_DAY () - последний день в данном месяце.
- ДАТА () - Дата в формате ГГГГ-ММ-ДД без времени.
- ВРЕМЯ () Время в формате ЧЧ: II: СС без даты.
- TO_DAYS () - количество дней с 0 г. н.э.
- TO_SECONDS () - количество секунд с 0 г. н.э.
- UNIX_TIMESTAMP () - количество секунд с начала эпохи (1 января 1970 г.)
Например, если вы хотите получить только месяц и год, в которых были созданы все пользователи, вы можете использовать оператор SQL, например:
ВЫБЕРИТЕ id, МЕСЯЦ (created_at), YEAR (created_at) ОТ пользователей;
Это позволит получить все записи в пользователи Таблица и показать номер идентификатора, месяц и год, в котором был создан каждый пользователь.
Группировка записей по дате и периоду
Одним из отличных способов использования функций даты является возможность группировать записи по периоду дат с помощью ГРУППА ПО в ваших операторах SQL. Например, вы хотите получить общую сумму всех заказов в 2020 году, сгруппированных по месяцам. Вы можете использовать такой SQL-оператор, как:
ВЫБЕРИТЕ МЕСЯЦ (created_at), SUM (сумма) FROM заказов, ГДЕ created_at МЕЖДУ '2020-01-01 00:00:00' И '2020-12-31 23:59:59' ГРУППА ПО МЕСЯЦУ (created_at);
Это позволит получить все заказы, размещенные в 2020 году, сгруппировать их по месяцам, по которым они были созданы, и вернуть 12 записей, показывающих общую сумму, заказанную за каждый месяц года.
Обратите внимание: для повышения производительности индекса всегда лучше избегать использования функций даты, таких как ГОД() в предложении WHERE операторов SQL и вместо этого используйте МЕЖДУ как показано в приведенном выше примере.
Никогда больше не путайте с датами
Используя вышеуказанные знания, теперь вы можете эффективно работать, переводить и выполнять операции с датами и временем в широком спектре сценариев использования.
Не забывайте всегда использовать UTC при работе с датами для простоты и используйте приведенные выше советы для эффективного управления даты в вашем программном обеспечении, будь то выполнение простых вычислений или легкое создание отчетов, сгруппированных по дате периоды.
Если вы новичок в SQL, обязательно ознакомьтесь с этими основные команды SQL чтобы помочь вам улучшить использование SQL.
В этом руководстве рассматриваются элементы профессионального отчета и рассматриваются вопросы структурирования, стиля и завершения вашего документа в Microsoft Word.
- Неопределенные
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.