我想获取上次发布的结果。假设我的当前日期是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
答案 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`)
);
甚至更好的是,您可以将Date
和time
组合在一起
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;