Каков рекомендуемый способ хранения текущего времени с помощью PHP и MySQL?

Мой первоначальный подход:

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR //retrieve it like this $retrieved = mysql_query(....) //assume query for getting the stored time value $time = strtotime($retrieved); 

Я столкнулся с следующими подходами:

  1. использовать gmstrftime для обработки gmt
  2. используйте INT вместо VARCHAR для столбца
  3. используйте функцию mysql CURTIME или CURDATE
  4. используйте UNIX_TIMESTAMP mysql UNIX_TIMESTAMP

ни один из которых не использовал тип DATETIME или TIMESTAMP mysql var.

У вас есть лучший подход для этого?

Рекомендуется использовать тип поля timestamp mysql (YYYY-MM-DD HH: MM: SS) для хранения переменных времени и даты в mysql .

 $sDate = date("Ymd H:i:s"); // 2015-04-07 07:12:51 mysql_query("insert into `table_name` set `created_on` = '$sDate'"); 

Это дает вам возможность использовать функции mysql для сравнения дат, расчета разницы во времени и т. Д. Непосредственно в вашем запросе mysql.

Также вы всегда можете получить временную метку с помощью функции strtotime () .

 $result = mysql_query("select `created_on` from `table_name`"); $row = mysql_fetch_row($result); $iTimestamp = strtotime($row[0]); // 1428390771 

Я просто использую тип значения TIMESTAMP в MySQL и позволяю MySQL использовать собственный CURRENT_TIMESTAMP .

Ну, вы можете превратить поле MySQL TIMESTAMP в значение PHP Time (), используя strtotime()

Затем вам просто нужно сделать функцию, которая корректно превращает значение PHP Time () в значение MySQL TIMESTAMP.

Формат, используемый MySQL, не обязательно должен соответствовать формату, используемому PHP. Выберите лучшее с обеих сторон. Базы данных имеют данные о дате данных по какой-либо причине; в MySQL вы можете выбрать из них:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

В PHP у вас есть три варианта:

  • Хорошие старые временные метки просты в обращении, и вы можете использовать их в своих MySQL-запросах – см. FROM_UNIXTIME () и UNIX_TIMESTAMP () – но они имеют серьезные проблемы с диапазоном (вы не можете полагаться на них для дат до 1970 года, поэтому они непригодны для дней рождения).

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

  • Вы можете использовать пользовательский объект даты (сторонний или собственный DateTime).

Хранение его как int более логично. Вы сохраняете формат строки даты, с помощью которого вы можете впоследствии извлечь другой формат и больше данных. Я также сохраняю его как int.

Изменить: для (Uni-TimeZone) приложение int является самым быстрым способом, а PHP имеет отличные инструменты для преобразования времени.