我从SQL表中获得了以下带有varchar数据类型的输出。
Monday,11th of August 2014
我想显示为
11-Aug-2014
我想显示来自SQL的所有日期的上述日期格式但是mysql以大格式提供给我。 我是PHP新手 这里的任何人都可以用PHP代码实现这一目标。
If Possible Provide me Regex to solve this.
我很简单想要显示Date的缩短形式。
我将Varchar作为我的SQL,因此不可能使用Date_Time函数来解决它。
答案 0 :(得分:0)
select date_format(mdate, '%d-%m-%Y %H:%i:%s') AS formated_date from tabl;
或者你可以在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是数据库中日期的字段。
答案 1 :(得分: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
答案 2 :(得分:-1)
此链接将帮助您。
http://php.net/manual/en/datetime.format.php
$date = new DateTime($YourDate);
echo $date->format('Y-m-d H:i:s');
问候
答案 3 :(得分:-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
答案 4 :(得分:-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')