0

我有一个这种格式的日期。

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 个排序结果。

4

2 回答 2

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");

^- 看看这看起来有多恶心?如果你dateofb是一个DATE专栏,你可以这样做:

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

^- 这是您的原始查询。

于 2013-06-27T17:03:38.567 回答
-1

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

SELECT 
    *    
FROM biography
WHERE dateofb >= (CURDATE() - INTERVAL 90 DAY)
ORDER BY MONTH(dateofb), DAY(dateofb) ASC
LIMIT 0, 3
于 2013-06-27T17:06:14.187 回答