Формат mysql timestamp с использованием php
У меня есть столбец с именем postDate
, определенный как timestamp.
когда я печатаю его напрямую:
echo $result['postDate'];
Я получаю то, что хранится (например. 2011-03-16 16:48:24
)
с другой стороны, когда я печатаю его через функцию даты:
echo date('F/j/Y',$result['postDate'])
я получаю December/31/1969
что я делаю неправильно?
большое спасибо
Ответы
Ответ 1
попробуйте это.
date('F/j/Y',strtotime($result['postDate']));
поскольку требуется временная метка, а не форматированная дата как второй параметр.
или вы также можете попробовать
SELECT UNIX_TIMESTAMP(postDate) as postDateInt from myTable
вместо SELECT postDate from myTable
а затем введите это в свой код.
date('F/j/Y',$result['postDateInt']);
Ответ 2
Функция PHP date ищет int time()
как второй параметр. Попробуйте использовать strtotime()
echo date('F/j/Y', strtotime($result['postDate']) );
Ответ 3
Почему бы не форматировать дату по мере необходимости в запросе MySQL?
SELECT DATE_FORMAT(postDate, '%M/%D/%Y') as date from table
Ответ 4
Функция PHP `date() 'ожидает число для второго параметра - то есть временную метку unix.
Вы можете преобразовать строку даты SQL (или любую другую строку даты) в метку времени в PHP с помощью функции strtotime()
. Как минимум два других ответа уже высказали это.
Однако я бы предположил, что вам лучше будет получать дату из вашей базы данных в формате timestamp в формате unix. Вы можете сделать это, запросив используя функцию MySQL UNIX_TIMESTAMP()
следующим образом:
SELECT UNIX_TIMESTAMP(mydatefield) AS mydatefield_timestamp FROM mytable
.. очевидно, заменив имена полей и таблиц соответственно.
Затем вы получите дату в формате timestamp в возвращаемом наборе данных в PHP, который вы можете передать непосредственно в функцию date()
следующим образом:
echo date('F/j/Y',$result['mydatefield_timestamp']);
Надеюсь, что это поможет.