Mysql 显示上次发布的结果

Mysql 显示上次发布的结果,mysql,sql,Mysql,Sql,我想获取上次发布的结果。假设我的当前日期是2019年8月1日,时间是11:00。那么我将获取第2行(ID)的结果,或者(另一个)当前日期是2019年8月2日,时间是13:00,那么我将获取第5行(ID) 注:基于当前日期和时间 id date time number 1 | 31-07-2019 | 12:30 | 20 2 | 31-07-2019 | 18:30 | 35 3 | 01-08-2019 |

我想获取上次发布的结果。假设我的当前日期是2019年8月1日,时间是11:00。那么我将获取第2行(ID)的结果,或者(另一个)当前日期是2019年8月2日,时间是13:00,那么我将获取第5行(ID)

注:基于当前日期和时间

id        date          time    number

1   |   31-07-2019  |  12:30  |   20
2   |   31-07-2019  |  18:30  |   35
3   |   01-08-2019  |  12:30  |   40
4   |   01-08-2019  |  18:30  |   70
5   |   02-08-2019  |  12:30  |   21
6   |   02-08-2019  |  18:30  |   61

从tablename中选择id,其中date只是一个SQL查询,例如:

SELECT * FROM `ENTER_HERE_YOUR_TABLE_NAME` ORDER BY `date`, `time` DESC LIMIT 1
不需要额外费用


在您的情况下应该可以正常工作。

如果您想与当前服务器的时间使用进行比较,请立即使用
NoW()
否则您可以输入自己的时间,例如“2018-12-31 18:30”

SELECT * FROM `YourTable` 
where `Date` <= Now() AND `Time` <= DATE_FORMAT(Now(), '%H:%i') 
Order by `Date` Desc,`Time` Desc LIMIT 1;
或者更好的是,您可以将
日期
时间
组合在一起

CREATE TABLE `YourTable` (
  `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `Date` DATETIME NOT NULL,
  `Number` INTEGER,
  PRIMARY KEY (`ID`)
);
使用上述结构,您可以将查询简化为

SELECT * FROM `YourTable` 
where `Date` <= Now() 
Order by `Date` Desc LIMIT 1;
从'YourTable'中选择*

其中'Date`如果在更改当前表数据类型时遇到困难,请尝试此操作

SELECT * FROM yourtable 
WHERE date = DATE_FORMAT(CURDATE(),'%d-%m-%Y') 
AND time <= TIME_FORMAT(CURTIME(),'%H:%i')
ORDER BY time DESC 
LIMIT 1;
从表格中选择*
其中date=date\u格式(CURDATE(),“%d-%m-%Y”)

您需要基于给定日期的最新发布结果的时间?ot just latest?没错。我想根据当前日期和时间获取最新或最近的记录。我是否可以建议您将列date和Time组合在一起?使用日期数据类型存储日期我认为我还应该添加,您建议的查询仍然会产生错误的结果。为了您将来的参考,在
Order By
子句中,您必须指定订单的类型,否则默认情况下,它将假定为
Asc
。我知道,但如果是您的awnser,我在我的awnser中写了以下行:
从'ENTER_HERE\u your_TABLE\u NAME'按日期订购',选择*,`time`DESC LIMIT 1
因此可能存在复制过去错误或其他问题xD我的查询应该可以xD当它回答问题时,最好在代码旁边包含一些附加信息。与
类似,您可以按时间对结果排序,并使用limit子句选择第一个结果https://dev.mysql.com/doc/refman/8.0/en/select.html
。并将代码格式化为多行。带有链接和正确代码格式的答案通常更有用,更有可能获得投票等,而只有代码的答案会自动进入LQP队列-
SELECT * FROM `YourTable` 
where `Date` <= Now() 
Order by `Date` Desc LIMIT 1;
SELECT * FROM yourtable 
WHERE date = DATE_FORMAT(CURDATE(),'%d-%m-%Y') 
AND time <= TIME_FORMAT(CURTIME(),'%H:%i')
ORDER BY time DESC 
LIMIT 1;