我有一个列表 match
尚未播放,现在我需要知道 datetime
是否包含确切开始日期和时间的字段小于当前 datetime
。我怎样才能实现类似的目标?
数据样本
| id | round_id | datetime
1 1365 2018-08-19 07:00:00
2 1365 2018-08-08 11:00:00
3 1365 2018-07-28 07:00:00
4 1365 2018-07-27 11:00:00
5 1365 2018-07-29 07:00:00
如您所见,我们有 2 match
下个月(八月)玩,三个match
当月播放的节目 July
。
所以查询应该返回 true
因为几乎有一场比赛有 date
小号表示当前日期,这意味着这个 match
已经玩过了。如果改为 matches
id: 3, 4, 5 不在列表中,那么查询应该返回 false
.
我尝试过的
SELECT COALESCE(MIN(CASE WHEN m2.datetime < NOW() THEN true END), false)
FROM `match` m2 WHERE m2.round_id = 1365
query
始终返回true
,这真的很奇怪,有人能告诉我我做错了什么吗?
最佳答案
您甚至不需要真/假,您只需引用它即可。 m2.datetime < NOW()
实际上是一个 bool 值,并添加 IF
或CASE
声明完全是多余的:
SELECT m2.datetime < NOW() AS `is_less_than_today`
FROM `match` m2 WHERE m2.round_id = 1365
查看示例 fiddle here 。
编辑(将返回 1 个真值或假值):
SELECT SUM(m2.datetime < NOW()) > 0
FROM `match` m2
WHERE m2.round_id = 1365
GROUP BY m2.round_id
查看更新的 fiddle here 。
关于mysql - 如何检查记录的日期时间字段是否小于当前日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51569275/