Формат STR_TO_DATE до даты - PullRequest
1 голос
/ 20 мая 2009

Привет, я смог извлечь VARCHAR для даты, используя string_to_date, однако, что бы я ни пытался использовать, дата всегда повторяется как, например, 2009-05-25
Вот мой код, который работает:

$query = "SELECT u.url_id, url, title, description, STR_TO_DATE( pub_date, '%d-%b-%Y') 
    AS pub_date FROM urls AS u, url_associations AS ua WHERE u.url_id = ua.url_id AND
    ua.url_category_id=$type AND ua.approved = 'Y' ORDER BY pub_date DESC";
$result = mysql_query ($query);
echo "  <tr>
<td align=\"left\">{$row['pub_date']}</td>
</tr>\n";

Я пробовал DATE_FORMAT и аналогичные методы, но я либо получаю 2009-05-25, либо пусто. Может ли кто-нибудь помочь мне решить эту проблему. Я ищу и проверяю, но я решил попросить о помощи здесь, так как помощь приветствуется, и те, кто помогал ранее, были очень добры.

Спасибо

Sean

Ответы [ 2 ]

2 голосов
/ 20 мая 2009

Тип возврата STR_TO_DATE равен DATE, который возвращается к PHP.

Это PHP, который форматирует даты в вашем echo, а не MySQL.

Чтобы выполнить форматирование на стороне MySQL, используйте:

DATE_FORMAT(STR_TO_DATE( pub_date, '%d-%b-%Y'), '%Y.%m.%d')

или другой формат.

Внутренний формат определяет, как ваша строка будет храниться в базе данных, внешний формат - как она будет выводиться.

Чтобы выполнить форматирование на стороне PHP (что лучше, поскольку вы можете учитывать форматы, специфичные для культуры для разных пользователей), используйте:

echo date('Y m d', strtotime($row['pub_date']))
0 голосов
/ 21 февраля 2016

С этот ссылочный сайт следующие команды mysql и вывод

mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
        -> 'Sunday October 2009'
mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
        -> '22:23:00'
mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00',
    ->                 '%D %y %a %d %m %b %j');
        -> '4th 00 Thu 04 10 Oct 277'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
    ->                 '%H %k %I %r %T %S %w');
        -> '22 22 10 10:23:00 PM 22:23:00 00 6'
mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
        -> '1998 52'
mysql> SELECT DATE_FORMAT('2006-06-00', '%d');
        -> '00'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...