В бд хранится дат время в таком формате 1486983600187. Как мне получить читабельный? PHP.
Используйте DateTime::createFromFormat
и формат U
документация
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
Либо средствами sql
DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%d-%m-%Y') as "date"
1486983600187
- это unix-like timestamp в миллисекундах, скорее всего получен из Javascript.
Для получения обычного unix-timestamp его нужно разделить на 1000;
Для получения из timestamp даты-времени в нужном формате существует функция date
$time = 1486983600187;
date('Y-m-d H:i:s', $time / 1000);
В бд хранится дат время в таком формате 1486983600187.
Hадо было указать, в какой именно СУБД. Предполагаю, что это MySQL. В таком случае гораздо разумнее сразу от сервера получать дату-время, приведённые к нужному типу и отформатированные в нужный вид.
Кроме того, надо было указать тип поля, в котором хранится такое значение. Потому как 1486983600187 для хранения в СУБД ни под UNIXTIME, ни под TIMESTAMP не подходит (для первого слишком велико, а для второго слишком мало).
Если vp_arth прав, и это UNIXTIME, умноженный на 1000,
mysql> SELECT FROM_UNIXTIME('1486983600187' / 1000) AS FormattedDateTime;
+----------------------------+
| FormattedDateTime |
+----------------------------+
| 2017-02-13 14:00:00.187000 |
+----------------------------+
1 row in set (0.00 sec)
mysql>
Самый простой способ
echo date("Y-m-d H:i:s", strtotime($row['date]));
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создаю триггер с помощью миграции, PostgreSQLДелаю запрос напрямую в БД -> отрабатывает корректно: и функция, и триггер создаются