您好,我已经能够使用string_to_date提取日期的VARCHAR,但是无论我尝试什么,日期总是像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,要么收到空白。有人能帮我解决这个问题吗?我正在寻找和测试,但我已经决定在这里寻求帮助,因为帮助是受欢迎的,并且那些以前帮助过的人非常友好。
谢谢
肖恩
发布于 2009-05-20 18:25:05
STR_TO_DATE的返回类型为DATE,返回给PHP。
在echo中格式化日期的是PHP,而不是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']))发布于 2016-02-21 15:13:50
下面是this reference site的命令和输出
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'https://stackoverflow.com/questions/889381
复制相似问题