将STR_TO_DATE格式化为日期

时间:2009-05-20 18:05:44

标签: php mysql string date

您好我已经能够使用VARCHARstring_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或空白。 任何人都可以帮我解决这个问题。我正在寻找和测试,但我决定在这里寻求帮助,因为欢迎这些帮助,而之前帮助过的人非常友好。

谢谢

肖恩

2 个答案:

答案 0 :(得分:2)

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']))

答案 1 :(得分:0)

来自this reference site以下是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'