我不知道如何找到日期类型中最低的字符串。
我只会找到最低的月份(按年数计算)
TableName
Id | M | D | Y |
=======================
1 | 01 | 22 | 2012 |
2 | 11 | 29 | 2012 |
3 | 12 | 30 | 2013 |
4 | 01 | 30 | 2011 | <--- this !
5 | 12 | 14 | 2012 |PHP:
$sql = "SELECT * FROM TableName WHERE M=?? AND Y=??";
$selected = mysql_query($sql);所以$selected应该给我一个类似于"4/01/30/2011“的结果(Id,M,D,Y)
有吗?
发布于 2016-03-29 10:44:43
问题94的回答会给你正确的结果:
SELECT min(concat(Y,M,D))
FROM `TableName`但是这将无法在日期的任何组成字段上使用任何索引,因此必须访问表中的每一行以确定最小值。
结合m4t1t0和koopajah的回答,您可以看到:
SELECT *
FROM `TableName`
ORDER BY Y, M, D
LIMIT 1这将能够在Y上使用可用索引,甚至可以在(Y,M,D)上使用组合索引,后者在大型表上的执行速度要快得多。
所有这些都是这么说的;对这个问题的回答不建议使用日期字段而不是您的三列设置,这几乎是犯罪行为。我能想到的分离日期列的唯一原因是,对于需要在日或月分别索引的小众查询的性能,但接受答案的选择表明情况并非如此。
正如卢修斯指出的..。如果是日期,将其存储为日期并运行:
SELECT MIN(`DateColumnName`) FROM `TableName`更重要的是,这将允许您访问列中的所有MySQL时态函数,包括提取日期和月份、按您喜欢的格式设置它的功能,以及一个可以索引和排序的字段。
发布于 2012-12-03 11:37:50
SELECT min(concat(Y,M,D)) FROM TableName编辑:这看起来很漂亮,很干净,但是这是一个非常糟糕的答案,所以请使用这个answer
发布于 2012-12-03 11:38:46
只需使用ORDER BY子句:
SELECT * FROM TableName
ORDER BY Y ASC, M ASC, D ASC更多信息在这里:http://www.tizag.com/mysqlTutorial/mysqlorderby.php
https://stackoverflow.com/questions/13682384
复制相似问题