显示最近发布的结果

时间:2019-08-01 06:16:59

标签: mysql sql

我想获取上次发布的结果。假设我的当前日期是01-08-2019并且时间是11:00。那么我将获得第2行(ID)或(另一个)行的结果当前日期是02-08 -2019和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

4 个答案:

答案 0 :(得分:1)

这只是一个SQL查询,例如:

SELECT * FROM `ENTER_HERE_YOUR_TABLE_NAME` ORDER BY `date`, `time` DESC LIMIT 1

不需要额外的东西。

应该适合您的情况。

答案 1 :(得分: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;

也请查看您当前的Date列,您可能使用了错误的数据类型...您可能考虑将表创建为类似的格式(我在其中使用了数据类型Date

CREATE TABLE `YourTable` (
  `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `Date` DATE NOT NULL,
  `Time` TIME NOT NULL,
  `Number` INTEGER,
  PRIMARY KEY (`ID`)
);

甚至更好的是,您可以将Datetime组合在一起

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;

答案 2 :(得分:0)

select id from tablename where date<='01-08-2019' and time<='11:00' order by date,time desc limit 1 

答案 3 :(得分:0)

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

SELECT * FROM yourtable 
WHERE date = DATE_FORMAT(CURDATE(),'%d-%m-%Y') 
AND time <= TIME_FORMAT(CURTIME(),'%H:%i')
ORDER BY time DESC 
LIMIT 1;