包含以下数据的MySQL数据库:
project_id | updated | next_steps
1 | 2014-08-01 03:19:20 | new_com
2 | 2014-08-12 03:20:34 | NULL
3 | 2014-08-12 07:01:12 | NULL
4 | 2014-08-05 09:25:45 | comment
我想在“更新”列中选择最新日期的所有行。应忽略小时/分钟的差异。我希望从这个例子得到第2行和第3行,如下所示:
2 | 2014-08-12 03:20:34 | NULL
3 | 2014-08-12 07:01:12 | NULL
当然,对于真实表格,每天更改符合我标准的行数,数字可以是100,200,324等(它不是固定数字)。我尝试了以下代码并始终出错。
SELECT * FROM `table` WHERE updated LIKE %DATE(MAX(updated))%;
或
SELECT * FROM `table` WHERE updated LIKE %CAST(DATE(MAX(updated)) AS CHAR)%;
错误讯息是
“#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'%CAST(DATE(MAX(已更新))AS CHAR附近使用正确的语法%LIMIT 0 ,30'在第1行“
答案 0 :(得分:2)
您需要使用WHERE
查询并使用DATE(x)
计算没有时间的最大日期,然后选择具有该日期的所有值,而不是时间。
试试这个:
SELECT * FROM `table` WHERE DATE(`updated`) = (SELECT MAX(DATE(`updated`)) FROM `table`)
如果你还想要他们订购
SELECT * FROM `table`
WHERE DATE(`updated`) = (SELECT MAX(DATE(`updated`)) FROM `table`) ORDER BY `updated` DESC
快乐的编码!
答案 1 :(得分:2)
SELECT MAX(DATE(updated)) FROM table
(这会返回2014-08-12
)将此作为子查询使用。这会返回最大日期。例如:SELECT * FROM table WHERE DATE(updated) = (SELECT MAX(DATE(updated)) FROM table)
子查询返回所需的最大日期,之后您可以查询正确的行。这将返回在最大日期更新的所有行。
答案 2 :(得分:0)
如果你想要两个数据,
nse