如何使用mysql按月和日排序

时间:2013-06-27 16:59:56

标签: php mysql

我有这种格式的日期。

08 april 1989
02 December 1984
13 January 1986 

我想使用月份和日期对结果进行排序,其中包含“dateofb”列,我的排序就像

13 january 1986
08 april 1989
02 december 1984

我使用了以下不能正常工作的代码,

$sel = $db->query("select * from biography where dateofb >= (CURDATE() - INTERVAL 90 DAY) order by dateofb desc limit 0,3");

我想显示90天的3个排序结果。

2 个答案:

答案 0 :(得分:0)

是否可以将dateofb列转换为DATE列类型?这可以让你做你想要的。您现在拥有的格式无效,需要通过STR_TO_DATE(dateofb, '%d %M %Y')

进行转换

示例:

$sel = $db->query("select * from biography where STR_TO_DATE(dateofb, '%d %M %Y') >= (CURDATE() - INTERVAL 90 DAY) order by STR_TO_DATE(dateofb, '%d %M %Y') desc limit 0,3");

^ - 看看看起来有多严重?如果您的dateofbDATE列,则可以执行以下操作:

$sel = $db->query("select * from biography where dateofb >= (CURDATE() - INTERVAL 90 DAY) order by dateofb desc limit 0,3");

^ - 这是您的原始查询。

答案 1 :(得分:-1)

如果您的“dateofb”字段是DATE或DATETIME:

SELECT 
    *    
FROM biography
WHERE dateofb >= (CURDATE() - INTERVAL 90 DAY)
ORDER BY MONTH(dateofb), DAY(dateofb) ASC
LIMIT 0, 3