телефон в Москве:

8 (495) 544-78-l7; 8 (925) 544-78-l7

8 (495) 648-38-29; 8 (929) 651-5O-8l 

E-mail:  info@snite-mebel.ru

Главная | Вопросы | Доставка | Магазины | Распродажа | Сертификат | Контакт |


Каталог

Последние статьи



  

 

Магазин Орбита-Мебель - лучшие Интернет цены!
Интернет качественной детской мебели Орбита-Мебель

                  8 (495) 741-91-14


 

Теперь лучшая мебель для дома собрана в одном месте!
Мебельный Интернет магазин

 
 Остерегайтесь подделок!
Покупайте мебель в проверенных местах!

Главная
В корзине 0 шт.
На сумму: 0 руб.
оформить заказ

Как использовать в MySQL: timestamp и datetime


Пост опубликован: 23.12.2017


MySQL предоставляет разработчику возможность работать со временем различным образом. Имеются типы данных для описания полей в таблицах. Предлагается множество функций для применения в запросах. Доступна временная локализация и смена часовых поясов в сессиях, настройках MySQL и использование времени операционной системы.

MySQL timestamp

Ответственность за применение типов данных и смену часовых поясов лежит на разработчике, который должен учитывать время клиента и время сервера. Они не всегда совпадают.

Описание таблиц с полями времени

В примере описаны три варианта представления времени. Два — типа 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 в предлагаемом функционале, в том его назначении, которое определено самой базой данных. Это её собственный штамп момента времени, формат представления времени.

MySQL timestamp now

Тип datetime более относим ко времени в представлении эпохи юникс и его можно ассоциировать, например, с функцией PHP mktime() или обычным текстовым форматом, например:

Авторский пример - это не картинка

Здесь переменная $cStndDate — обычный текст, который интерпретируется в запросе как что-то, написанное в формате даты/времени. Если переменная указана правильно, то в нужное поле таблицы запишется нужное значение.

Пользовательское время — это требование задачи. Далеко не всегда следует представлять базе данных все права по управлению временем. Она всегда все сделает «по-своему». Это не всегда правильно, например, нужны названия русских месяцев или особый порядок записи дня, месяца и года.


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

Работа с MySQL timestamp & datetime требует внимательности и аккуратности. Другое дело — собственный формат даты, записанный в виде обычного текста. Правда, в этом случае теряются достоинства стандартных типов даты, например, сортировка или вычисления над датами, но появляются желаемые преимущества.

mysql timestamp

В любом случае, разработчику следует быть предельно внимательным. Часовые пояса, настройки локализации и множество других нюансов могут создать определённое непонимание. Если что-то при работе с датой стало с NULL или нулями во всех позициях, нужно искать, прежде всего, ошибку в собственном алгоритме. MySQL, его поля даты и функции времени работают исключительно стабильно и правильно.


Главная | О магазине | Доставка | Статьи | Контакт |