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