2014-08-14 8 views
-3

Я получил следующий вывод из таблицы SQL с типом данных varchar.Изменение формата времени в PHP

Monday,11th of August 2014 

Я хочу, чтобы отобразить в

11-Aug-2014 

Я хочу показать выше формат даты для всех дат пришедшего из SQL Но MySQL дает мне в большом формате. Я новичок в PHP любой, кто может сделать это возможным с помощью PHP-кода.

If Possible Provide me Regex to solve this. 

Я прошу простенько сказать, что сокращение от даты.

У меня есть Varchar как мой SQL так, его невозможно с функцией Date_Time для его решения.

+0

Какой тип данных является вашим столбцом в таблице MySQL? Если вы храните его в этом формате как varchar, а не используете родные типы данных даты/времени, тогда вы должны сначала изменить свою базу данных. –

+0

Да Его varchar. –

+3

Затем я настоятельно рекомендую сначала сменить базу данных: использовать MySQL native [даты/времени datatypes] (http://dev.mysql.com/doc/refman/5.6/en/date-and-time-types.html) для дат –

ответ

0

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

$str = "Monday,11th of August 2014"; 

preg_match("/\,\s*(\d+).+([A-Z][a-z]{2}).+(\d{4})/", $str, $date); 
echo $date[1]."-".$date[2]."-".$date[3]; 

Выход:

11-Aug-2014 
+0

Спасибо, что это будет безопасно Моя жизнь. Спасибо большое :) –

+0

Добро пожаловать, просто помните 'однако', рекомендуется изменить тип данных поля :) – Lenny

+0

Это может спасти вашу жизнь сейчас, но всегда помните аксиому, что следующий человек на работу с вашим кодом будет психопат, владеющий топором, который знает, где вы живете –

-1

Эта ссылка поможет вам.

http://php.net/manual/en/datetime.format.php

$date = new DateTime($YourDate); 
echo $date->format('Y-m-d H:i:s'); 

Приветствия

+0

Ссылки только ответы не считаются хорошими ответами, поскольку ссылка или контент могут измениться. – Sugar

+0

@Webice, пожалуйста, укажите пример использования функции вместо простой ссылки на немецкую версию руководства. – Lenny

-1
SELECT DATE_FORMAT(NOW(), '%d-%b-%Y') FROM dual 

Вместо NOW() вы можете использовать столбец даты, вместо того, чтобы dual ваш стол.

Для этого требуется тип столбца DATETIME.

Полная таблица параметров формата дата можно найти здесь: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

+0

У меня есть varchar как тип данных. –

+0

@Sidj вы должны изменить его, как уже указывал Марк Бейкер, проще, иногда быстрее и надежнее работать с семантическими правильными типами. – DanFromGermany

+0

Но изменяя тип данных, все мои другие php-коды ошибаются. как у меня более 5 Lakhs Entrys. Если это возможно, предоставьте мне Regex, чтобы решить эту проблему :) –

0

select date_format(mdate, '%d-%m-%Y %H:%i:%s') AS formated_date from tabl; в MySQL или же вы можете сделать в PHP.

$timestamp = strtotime($row["mdate"]); 
then you can use all options of date() to format it, for example: 

echo date('j-F-Y', $timestamp); // returns 09-03-2010 16:59:18 this can be set as per your required formate. 

где mdate - ваше поле в базе данных на день.

+0

Вышеуказанное не возможно, потому что у меня нет времени в поле Varchar SQL. –

+0

, тогда вы должны установить тип данных на дату/время в своем mysql, он решит вашу проблему и будет хорошо. –

-1

Вы могли бы решить эту проблему без использования чего-либо внешнего по отношению к запросу MySQL.

Использование функции STR_TO_DATE() в запросе, который возвращает дату из таблицы, например, так: -

SELECT stupid_varchar_date, 
     STR_TO_DATE(stupid_varchar_date,'%W,%D of %M %Y') as a_usable_date 

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

UPDATE table SET new_date = STR_TO_DATE(stupid_varchar_date,'%W,%D of %M %Y') 
Смежные вопросы