Php 我需要不寻常的结果
我正在尝试从当前日期开始按升序排列结果 这就是我现在使用的Php 我需要不寻常的结果,php,mysql,Php,Mysql,我正在尝试从当前日期开始按升序排列结果 这就是我现在使用的 SELECT * FROM friends JOIN bdays ON bdays.user = friends.friendname WHERE username = $userid ORDER BY DATE_FORMAT(date, '%m %d') 有什么想法吗 示例 现在按日期排序,从1月份开始对生日进行排序 我需要的不是从一月开始,而是从当前日期开始 所以,不是, January February March Apri
SELECT * FROM friends JOIN bdays
ON bdays.user = friends.friendname
WHERE username = $userid ORDER BY DATE_FORMAT(date, '%m %d')
有什么想法吗
示例
现在按日期排序,从1月份开始对生日进行排序
我需要的不是从一月开始,而是从当前日期开始
所以,不是,
January
February
March
April
May
June
July
August
September
November
December
它会这样命令他们
April (current month/day)
May
June
July
August
September
November
December
January
February
March
April (all the way up to yesterday)
类似于按if排序(日期格式(日期,'%m%d')<日期格式(现在(),'%m%d')),1,0),日期格式(日期,'%m%d')您可以尝试:
SELECT *, DATE_FORMAT(date, '%m %d') as adate FROM friends JOIN bdays
ON bdays.user = friends.friendname
WHERE username = $userid
ORDER BY adate
我是这样做的:
SELECT *, (DATE_FORMAT(date, '%j')-DATE_FORMAT(NOW(), '%j')+365)%365 AS d
FROM foo ORDER BY d;
%j
日期格式是一年中的某一天,即数字001…366
我在一些样本数据上对此进行了测试,它按照您描述的方式进行排序:它忽略年份,并首先对当前日期之后的下一个日期进行排序,然后升序,最后换行到今年早些时候的日期
+----+------------+------+
| id | date | d |
+----+------------+------+
| 5 | 1999-05-15 | 27 |
| 6 | 1992-06-15 | 59 |
| 7 | 1990-07-15 | 88 |
| 8 | 1988-08-15 | 120 |
| 9 | 1980-11-15 | 212 |
| 1 | 2010-01-15 | 272 |
| 2 | 2009-02-15 | 303 |
| 3 | 2004-03-15 | 332 |
| 4 | 2002-04-15 | 362 |
+----+------------+------+
你可以试试:
ORDER BY
DATE_FORMAT(date,'%m %d') < DATE_FORMAT(NOW(),"%m %d"),
DATE_FORMAT(date,'%m %d');
orderby
日期格式(日期,“%m%d”)<日期格式(现在(),“%m%d”),
日期格式(日期,“%m%d”);
首先,按日期是否小于当前日期排序,然后按月份和日期升序排序
注意
这看起来像是子母弹上校所指的方法。为什么要格式化它?为什么不只是“按日期排序”?在我的具体情况下,年份没有用,这些是生日,所以年份不重要。这应该行得通。日期字段的格式是什么?YYYY-MM-DD格式,mysql-datetime格式您不会说它是如何工作的。你能举一个例子,说明一些行没有按你期望的方式排序吗?如果您显示查询的结果是什么,以及它与您期望的结果有多大的不同,这将很有帮助。