MySQL datetime в PHP - PullRequest
       9

MySQL datetime в PHP

3 голосов
/ 22 сентября 2010

Я нашел правильное решение своей «проблемы», но даже после прочтения страниц mysql я не понимаю логику, стоящую за ней.

В настоящее время я храню регистрационную информацию в своей системе в «datetime»отформатированное поле в одной из моих таблиц (YYYY-MM-DD hh:mm:ss).

Когда я хочу отобразить данные на одной из моих страниц php, простая публикация точных данных поля показывает формат, упомянутый выше.

Я бы ДУМАЛ , просто используя date("Y-m-d",$row["DATE"]), где $row["DATE"] соответствует конкретному значению строки, вернуло бы желаемый формат.

Вместо этого я должен использовать: date("Y-m-d", strtotime($row["DATE"])).

Почему это?Мое поле $row["DATE"] не является строкой.Должен ли я иметь возможность просто переставить данные, хранящиеся в поле даты и времени?Разве это не было целью восстановления всего моего набора таблиц, чтобы приспособить дату и время?

Ответы [ 2 ]

5 голосов
/ 22 сентября 2010

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

SELECT DATE_FORMAT(date_field, '%Y-%m-%d') as date_field FROM table_name

В руководстве есть список форматов и необходимые переменныечтобы показать это таким образом.При использовании этого метода не нужно будет преобразовывать PHP и т. Д. Кроме того, на стороне PHP меньше кода для чего-то, что MySQL может легко обрабатывать.

РЕДАКТИРОВАТЬ

Извините, только что прочитал, что вы искали объяснение.

PHP-функция date принимает временную метку UNIX, которую MySQL не использует.MySQL использует реальный формат даты IE: YYYY-MM-DD HH:MM:SS, как вы знаете, это должно быть совместимым в течение многих лет.Отметка времени UNIX имеет ограниченный диапазон от 1969 до 2037, для которого она действительна, что делает ее действительно полезной для «отметки времени» таких элементов, как сообщение в окне чата или элементов, которые, как ожидается, не будут присутствовать после публикации этих дат, гдетак как MySQL DATETIME не должен вымирать до тех пор, пока год не изменится на 5 цифр или не закончится мир.

Прочитайте WIKI на UNIX timestamp для получения дополнительной информации об этом.

2 голосов
/ 23 сентября 2010

MySQL позволяет вам выбирать даты в формате отметки времени unix, что позволяет легче использовать их в PHP, именно так, как вы просили.

Предыдущий ответ, казалось, игнорировал этот пункт или приуменьшал его из-зак ограничению диапазона на отметке времени Unix, но если это то, что вы ищете ...

SELECT UNIX_TIMESTAMP(datefield) as u_datefield FROM table

даст вам дату в формате отметки времени, которую вы можете использовать, как вы предложили в PHP:

<?php
$showdate = date("Y-m-d",$row['u_datefield']);
?>

Как показывает предыдущий ответ, временные метки Unix имеют ограниченный диапазон, поэтому, если вам нужны даты до 1970 или после 2038 года, они могут не подходить, но для повседневного использования сегодня это здорово.

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

...