如何在 MySQL 中编写从现在到今天午夜之间的查询?

Posted

技术标签:

【中文标题】如何在 MySQL 中编写从现在到今天午夜之间的查询?【英文标题】:How to write query with time between now and midnight of today in MySQL? 【发布时间】:2012-11-24 04:44:53 【问题描述】:

我有如下查询

SELECT * FROM programs where startTime between now() and now() + INTERVAL 1 DAY;

是否可以在 mysql 中编写从现在到今天午夜之间的查询?

类似下面的东西

SELECT * FROM programs where startTime between now() and now() + midnight 12;

【问题讨论】:

【参考方案1】:
SELECT *
FROM   programs
WHERE  DATE(startTime) = CURRENT_DATE AND startTime > CURRENT_TIMESTAMP

【讨论】:

【参考方案2】:

我建议您始终使用 clopen(封闭-开放)间隔进行日期和时间比较。 BETWEEN 表示封闭间隔(从两侧)。 @Aaron Bertrand's 博客文章中有一个很好的解释:What do BETWEEN and the devil have in common?。这是编写查询的一种方法:

SELECT * 
FROM programs 
WHERE startTime >= NOW() 
  AND startTime < CURRENT_DATE() + INTERVAL 1 DAY ;

【讨论】:

【参考方案3】:

您可以尝试以下方法:不过可能会很长。

示例表:

ID  STIME                               ETIME
1   December, 05 2012 05:23:00+0000     December, 05 2012 07:30:00+0000
2   December, 05 2012 10:23:00+0000     December, 05 2012 12:30:00+0000
3   December, 06 2012 22:45:00+0000     December, 07 2012 01:00:00+0000
4   December, 06 2012 22:23:00+0000     December, 06 2012 23:55:00+0000
5   December, 06 2012 20:23:00+0000     December, 06 2012 22:55:00+0000
6   December, 07 2012 10:23:00+0000     December, 07 2012 12:30:00+0000

查询

SELECT  *,curtime() FROM prog
WHERE date(stime) = date(now())
AND date(etime) = date(now())
AND time_to_sec(SUBTIME(etime,'24:00:00')) >= 0
;

结果

ID  STIME                               ETIME   
4   December, 06 2012 22:23:00+0000     December, 06 2012 23:55:00+0000     
5   December, 06 2012 20:23:00+0000     December, 06 2012 22:55:00+0000     

【讨论】:

【参考方案4】:

试试这个 ::

SELECT * FROM programs where startTime between now() and DATE_SUB(CURDATE(), INTERVAL 1 DAY)

【讨论】:

语法不正确,between 需要多一个参数【参考方案5】:
SELECT * FROM programs where startTime between now() and CURRENT_DATE() + INTERVAL 1 DAY;

当前日期返回一天的开始,然后我们添加 1 天到结束。

【讨论】:

这将包括明天的00:00:00;目前还不清楚这是否可取。 是的,您可能想使用where startTime &gt;= now() and startTime &lt; CURRENT_DATE() + INTERVAL 1 DAY

以上是关于如何在 MySQL 中编写从现在到今天午夜之间的查询?的主要内容,如果未能解决你的问题,请参考以下文章

显示从午夜到现在的计数器数据

如何在午夜 12:01 使用 Spring Boot 将间隔后的行添加到数据库 SQL 中

如何编写一个每天午夜运行脚本的 cron?

如何在午夜更新应用小部件?

mysql磁盘空间不足的查排

在日期之间选择mysql查询?