Как да използвате MySQL: timestamp и datetime

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

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

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

В примера има три варианта на представяне на времето. Две са типа на MySQL timestamp (start_timestamp, next_timestamp), единият е типът на MySQL datetime (start_datetime) и интерфейсът е опция под формата на низ от символи (work_income).


Типът timestamp е родния за MySQL формата на времето за регистриране на събития, заема 8 байта, е цяло число и има една характеристика: първата колона се попълва от автомат по време на създаването: заявката

. Вторият и всички последващи остават нула, но това не е NULL. Query

съдържа функцията MySQL timestamp now (), използвана за попълване на полето start_datetime.
В този пример се вижда, че таблицата, генерирана от заявката (1 създаване на таблица), ще запълни първата колона start_timestamp с машината, когато таблицата е създадена. Искането (2 попълване на таблицата) показва, че това е точно така. В този случай втората колона next_timestamp остава нула: всички компоненти на датата и часа са "0" във всички позиции, но не и NULL, като цялото поле. Ако премахнете връзката от заявката към полето start_datetime и функцията, тя попълва now (), тогава полето start_datetime ще съдържа стойност на NULL. Върхътчаст от картината показва таблица, използвайки функцията за запълване, долната част е таблица, без да се използва сега (). Разликите са значителни.


Unix време и обичай време

MySQL timestamp & amp; datetime се различават по пълнене и употреба. Например, опция:
  • int mktime ([int час [, int minute [, int секунди [,
  • е налично за полето за типа на datetime, докато полето timestamp тип е по-ориентирано към функциите на самия език MySQL. За да се използват най-ефективно и безопасно времевите полета, препоръчително е да се съсредоточите върху това как да работите с MySQL timestamp в предложената функционалност, в тази цел, която е дефинирана от самата база данни.
    Типът datetime се отнася повече до времето в представянето на ерата на yunks и може да бъде свързано с, например, функцията PHP mktime () или обичайния текстов формат, например:
    Тук променливата $ cStndDate е обикновен текст, който се интерпретира в заявката като нещо, записано във формат дата /час. Ако променливата е посочена правилно, необходимата стойност се въвежда в желаното поле на таблицата, а времето на потребителя е изискването на задачата. Не е необходимо винаги да се предоставя базата данни с всички права за управление на времето. Тя винаги ще прави всичко по свой собствен начин. Това не винаги е правилно, например, имате нужда от имена на руските месеци или специална поръчка на деня, месеца и годината.

    Часови зони и правилна логика

    Работа с MySQL timestamp & amp; datetime изисква грижа и точност. Друго нещо е неговият формат за дата,написан на обикновен текст. Вярно е, че в този случай ползите от стандартните типове дати, например сортирането или изчисляването на датите, се губят, но има желани ползи.
    Във всеки случай предприемачът трябва да бъде изключително внимателен. Часови зони, настройки за локализация и много други нюанси могат да създадат някои недоразумения. Ако нещо, което работи с дата, е станало NULL или нули във всички позиции, първо трябва да се търси грешка в собствения си алгоритъм. MySQL, неговите полета за дата и времеви функции са изключително стабилни и правилни.

    Свързани публикации