Как да работим ефективно с дати и часове в MySQL

Как да работим ефективно с дати и часове в MySQL

Датите и часовете са важни, те помагат да се организират нещата и са неразделна част от всяка софтуерна операция.





Ефективната работа с тях в базата данни понякога може да изглежда объркваща, независимо дали работи в различните часови зони, добавяне / изваждане на дати и други операции.





Научете различните налични функции на MySQL за лесно боравене и управление на дати / часове във вашата база данни.





Работа с часови зони

За да поддържате стандартизирани нещата, винаги трябва да работите само с дати / часове в часовата зона UTC. Всеки път, когато установявате връзка с базата данни MySQL, трябва да превключвате часовата зона на UTC, което може да стане със следния SQL израз:

SET TIME_ZONE = '+0:00'

Тъй като всички дати вече ще бъдат запазени в UTC, винаги знаете с какво работите, което прави нещата по -опростени и ясни.



как да проверите типа на защита на wifi windows 10

Когато е необходимо, можете лесно конвертирате часовата зона на всяка стойност на дата / час с удобен CONVERT_TZ () MySQL функция. Трябва първо да знаете изместването, например PST на западния бряг на Северна Америка е UTC -08: 00, така че можете да използвате:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

Това води до 2021-02-04 13:47:23 което е точно правилно. Трите аргумента преминаха към CONVERT_TZ () са първата дата / времева отметка, с която започвате (използвайте сега () за текущото време), втората винаги ще бъде '+0: 00' тъй като всички дати са принудени към UTC в базата данни, а последната е отместването, в което искаме да преобразуваме датата.





Добавяне / изваждане на дати

Много пъти трябва да добавяте или изваждате дати, например ако трябва да извличате записи от преди седмица или да планирате нещо за месец от сега.

За щастие MySQL има отлични резултати DATE_ADD () и DATE_SUB () функции, които правят тази задача изключително лесна. Например, можете да извадите две седмици от текущата дата с SQL израза:





SELECT DATE_SUB(now(), interval 2 week);

Ако вместо това искате да добавите три дни към съществуващ времеви знак, бихте използвали:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

И двете функции работят еднакво, първият аргумент е времевата марка, с която започвате, а вторият аргумент е интервалът за добавяне или изваждане. Вторият аргумент винаги е форматиран по един и същи начин, започвайки с думата интервал последвано от числова стойност и самия интервал, който може да бъде който и да е от следните: секунда, минута, час, ден, седмица, месец, тримесечие, година.

За друг пример, ако искате да извлечете всички данни за вход, които са възникнали през последните 34 минути, можете да използвате SQL израз, като например:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Както можете да видите, това ще извлече всички записи от влизания таблица с дата за вход по -голяма от текущото време минус 45 минути, или с други думи, последните 45 минути.

Получавайте разлика между датите

Понякога трябва да получите колко време е изминало между две дати. Можете лесно да получите броя дни между две различни дати с ДАТИФИЦИРАН функция, като например долния SQL израз:

SELECT DATEDIFF(now(), '2020-12-15');

The ДАТИФИЦИРАН функцията приема два аргумента, като и двата са марки за дата / час и дава броя дни между тях. Горният пример ще покаже броя на дните, изминали от 15 декември 2020 г. до днес.

За да получите броя секунди между две дати, TO_SECONDS () функцията може да бъде полезна, например:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Това ще доведе до броя на секундите между двете предоставени дати.

Извличане на сегменти от дати

Има различни функции на MySQL, които ви позволяват лесно да извличате определени сегменти от дати, например ако искате само месеца, деня в годината или часа. Ето няколко примера за такива функции:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Горните SQL изявления биха довели до 02 , текущия час и 196 тъй като 15 септември е 196 -ият ден в годината. Ето списък на всички налични функции за извличане на дата, всяка от които приема само един аргумент, като датата се извлича от:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Например, ако може би сте искали само да извлечете месеца и годината, в които са създадени всички потребители, можете да използвате SQL израз като:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Това ще извлече всички записи в потребители таблица и покажете идентификационния номер, месец и година, в която е създаден всеки потребител.

Групиране на записите по период на дата

Едно отлично използване на функциите за дата е възможността да се групират записи по дата ГРУПИРАЙ ПО в рамките на вашите SQL изявления. Например, може би искате да изтеглите общата сума на всички поръчки през 2020 г., групирани по месеци. Можете да използвате SQL израз като:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Това ще извлече всички поръчки, направени през 2020 г., ще ги групира по месеца, в който са създадени, и ще върне 12 записа, показващи общата сума, поръчана всеки месец от годината.

Моля, имайте предвид, че за по -добро представяне на индекса, винаги е най -добре да избягвате използването на функции за дата, като например ГОДИНА () в клаузата WHERE на SQL изразите и вместо това използвайте МЕЖДУ оператор, както е показано в горния пример.

Никога повече не се бъркайте с дати

Използвайки горните знания, сега можете ефективно да работите, да превеждате и да извършвате операции в дати и часове в широк спектър от случаи на употреба.

Не забравяйте винаги да използвате UTC, когато работите с дати за простота, и използвайте горните съвети за ефективно управление на датите във вашия софтуер, независимо дали става въпрос за завършване на прости изчисления или лесно изтегляне на отчети, групирани по периоди от дати.

Ако сте донякъде нов в SQL, не забравяйте да проверите тези основни SQL команди за да подобрите използването на SQL.

Дял Дял Туит електронна поща Как да създавате професионални отчети и документи в Microsoft Word

Това ръководство разглежда елементите на професионален доклад и прави преглед на структурирането, стилизирането и финализирането на вашия документ в Microsoft Word.

Прочетете Напред
Свързани теми За автора Мат Дизак(18 статии са публикувани) Още от Мат Дизак

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате