我有这种格式的日期。
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个排序结果。
答案 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");
^ - 看看看起来有多严重?如果您的dateofb
是DATE
列,则可以执行以下操作:
$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