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

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

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

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

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

SET TIME_ZONE = '+0: 00'

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

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

instagram viewer
PolyTime е най-доброто приложение за преобразуване на часови зони за множество градове наведнъж

PolyTime, ново приложение от MakeUseOf, улеснява сравняването на часовите зони по целия свят. Ето какво можете да направите с него и как работи.

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 израза:

ИЗБЕРЕТЕ DATE_SUB (сега (), интервал 2 седмици);

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

SELECT DATE_ADD ('2021-02-07 11:52:06', интервал 3 дни);

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

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

ИЗБЕРЕТЕ * ОТ влизания WHERE login_date> = DATE_SUB (сега (), интервал 45 минути);

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

Вземете разлика между датите

Понякога трябва да получите колко време е изтекло между две дати. Можете лесно да получите броя на дните между две различни дати с DATEDIFF функция, като например SQL оператора по-долу:

ИЗБЕРЕТЕ DATEDIFF (сега (), '2020-12-15');

The DATEDIFF функцията взема два аргумента, и двата от които са печати за дата / час и дава броя на дните между тях. Горният пример ще покаже броя на дните, изминали от 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-ият ден в годината. Ето списък на всички налични функции за извличане на дати, като всяка взема само по един аргумент, като датата се извлича от:

- ВТОРО ()
- МИНУТА ()
- ЧАС ()
- ДЕН ()
- СЕДМИЦА () - Номер 0 - 52, определящ седмицата в годината.
- МЕСЕЦ ()
- КВАРТАЛ () - Номер 1 - 4, определящ тримесечието на годината.
- ГОДИНА ()
- DAYOFYEAR () - Денят в годината (напр. 15 септември = 196).
- LAST_DAY () - Последният ден от дадения месец.
- ДАТА () - Датата във формат ГГГГ-ММ-ДД без часа.
- TIME () Времето в HH: II: SS формат без датата.
- TO_DAYS () - Броят дни от 0 г. сл. Н. Е.
- TO_SECONDS () - Броят секунди от 0 г. сл. Н. Е.
- UNIX_TIMESTAMP () - Броят секунди от епохата (1 януари 1970 г.)

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

ИЗБЕРЕТЕ id, MONTH (created_at), YEAR (created_at) FROM потребители;

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

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

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

ИЗБЕРЕТЕ МЕСЕЦ (created_at), SUM (сума) ОТ поръчки, КЪДЕ 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

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

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

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

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

Още една стъпка…!

Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.

.