Новини високих технологій
» » Як використовувати MySQL: timestamp і datetime

Як використовувати MySQL: timestamp і datetime

5-12-2017, 20:26
825
MySQL надає розробникові можливість працювати з часом різним чином. Є типи даних для опису полів в таблицях. Пропонується безліч функцій для застосування у запитах. Доступна тимчасова локалізація і зміна часових поясів у сесіях, налаштування MySQL і використання часу операційної системи.
Відповідальність за застосування типів даних і зміну часових поясів лежить на розробнику, який повинен враховувати час клієнта і час сервера. Вони не завжди збігаються.

Опис таблиць з полями часу

У прикладі наведено три варіанти подання часу. Два - типу MySQL timestamp (start_timestamp, next_timestamp), одна - типу MySQL datetime (start_datetime) і інтерфейс варіант у вигляді рядка символів (work_income).


Тип timestamp - це рідний для MySQL формат часу фіксації подій, займає 8 байт, є цілим числом та має одну особливість: перша колонка заповнюється автоматом в момент створення: запит (1). Друга та всі наступні - залишаються нульовими, але це не NULL. Запит (2) містить функцію MySQL timestamp now(), застосовану для заповнення поля start_datetime.
В цьому прикладі видно, що таблиця, сформована запитом (1 створення таблиці) буде заповнювати автоматом першу колонку start_timestamp при створенні таблиці. Запит (2 заповнення таблиці) показує, що це саме так. При цьому друга колонка next_timestamp залишається нульовий: усі складові дати і часу подано "0" у всіх позиціях, але не NULL, як все поле. Якщо із запиту прибрати посилання на полі start_datetime і функцію, його заповнює now(), то поле start_datetime буде містити значення NULL. Верхня частина картинки показує таблицю з використанням функції заповнення, нижня частина - таблицю без використання now(). Відмінності істотні.


Час юнікс і користувальницьке час

Поля таблиці MySQL timestamp & datetime відрізняються по заповненню та використанню. Наприклад, варіант: int mktime ([int hour[, int minute[, int second[, доступен для поля типа datetime, в то время как поле типа timestamp больше ориентируется на функции самого языка MySQL.С тем, чтобы использовать поля времени наиболее эффективно и безопасно, целесообразно ориентироваться на способ работы с MySQL timestamp в предлагаемом функционале, в том его назначении, которое определено самой базой данных. Это её собственный штамп момента времени, формат представления времени.
Тип datetime более относим ко времени в представлении эпохи юникс и его можно ассоциировать, например, с функцией PHP mktime() или обычным текстовым форматом, например:
Здесь переменная $cStndDate - обычный текст, который интерпретируется в запросе как что-то, написанное в формате даты/времени. Если переменная указана правильно, то в нужное поле таблицы запишется нужное значение.Пользовательское время - это требование задачи. Далеко не всегда следует представлять базе данных все права по управлению временем. Она всегда все сделает «по-своему». Это не всегда правильно, например, нужны названия русских месяцев или особый порядок записи дня, месяца и года.

Часові пояси і правильна логіка

Робота з MySQL timestamp & datetime вимагає уважності і акуратності. Інша справа - власний формат дати, записаний у вигляді звичайного тексту. Правда, в цьому випадку втрачаються переваги стандартних типів дати, наприклад, сортування або обчислення над датами, але з'являються бажані переваги.
У будь-якому випадку, розробнику слід бути гранично уважним. Часові пояси, налаштування локалізації та безліч інших нюансів можуть створити певне нерозуміння. Якщо що-то при роботі з датою стало з NULL або нулями у всіх позиціях, треба насамперед шукати помилку у власному алгоритмі. MySQL, його поля дати та функції часу працюють виключно стабільно і правильно.
Цікаво по темі
KML-файл формат — опис, особливості
KML-файл формат — опис, особливості
Файл KML зберігає дані про геомоделировании у форматі XML. Він містить точки, лінії і зображення. Використовують XML для вираження географічної
Доступ до результатів вибірки через MySQL fetch array
Доступ до результатів вибірки через MySQL fetch array
MySQL fetch array обробляє результати вибірки з бази даних і повертає в якості результату звичайний, асоціативний або обидва масиву відразу. Фактично
Практика використання функції count MySQL
Практика використання функції count MySQL
Кількість записів майже завжди має значення, а в деяких випадках це хороший інструмент для розробки коректних і компактних статистичних алгоритмів.
Видалення дублікатів MySQL distinct
Видалення дублікатів MySQL distinct
Видалення дублікатів MySQL distinct - потрібна операція. Багато вирішення завдань представлення та обробки інформації за допомогою реляційних баз
Тимчасові мітки на PHP: timestamp та обчислення часу
Тимчасові мітки на PHP: timestamp та обчислення часу
Час завжди має значення. Сайт, що не контролює час і не використовує його безперервно, не те, щоб не має права на життя, але однозначно не
Використання MySQL: insert into
Використання MySQL: insert into
Ефективне використання інформації часто визначається якістю структури бази даних і алгоритмів формування її змісту. Правильно додати запис в базу -