mysql - 如何检查记录的日期时间字段是否小于当前日期时间?

标签 mysql sql

我有一个列表 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 值,并添加 IFCASE声明完全是多余的:

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/

相关文章:

MySQL返回左连接表没有记录的记录

php - 来自数据库的 LARAVEL 输入值

c# - 我怎样才能插入到两个sql相关的表中?

MySQL 插入 ISO8601 日期时间格式

sql - 是否有针对世界上所有地址的通用街道地址数据库设计?

MySQL连接字符串不含敏感信息

java - hibernate 不返回新插入的记录

php - 谁能解释 MariaDB 这种奇怪的行为?

PHP:在单个查询中更新多个 MySQL 字段

php - 如何从 mysql 中的日期加载 {html_select_date} 中的日期