MySQL CURDATE()+间隔1天未按预期返回
我被难住了 我有一个表,它有一个字段job\u date\u start,数据类型设置为DATETIME 如果我从表中选择作业\日期\开始;从我的表格中,输出为:MySQL CURDATE()+间隔1天未按预期返回,mysql,sql,datetime,Mysql,Sql,Datetime,我被难住了 我有一个表,它有一个字段job\u date\u start,数据类型设置为DATETIME 如果我从表中选择作业\日期\开始;从我的表格中,输出为: +---------------------------+ | job_date_start | +---------------------------+ | 2021-02-26 12:00:00 | +---------------------------+ 如果我现在选择;从同一张表中,我得
+---------------------------+
| job_date_start |
+---------------------------+
| 2021-02-26 12:00:00 |
+---------------------------+
如果我现在选择;从同一张表中,我得到:
+---------------------------+
| NOW() |
+---------------------------+
| 2021-02-25 17:41:01 |
+---------------------------+
那么,当我使用以下命令时,为什么返回空结果
SELECT * FROM table WHERE job_date_start = curdate() + interval 1 day;
根据许多堆栈溢出问题,我的语法是正确的。。我有些不明白。工作日期开始似乎有时间成分。您需要一个日期范围或仅需要日期:
WHERE job_date_start >= curdate() + interval 1 day and
job_date_start < curdate() + interval 2 day ;
第一种方法对于索引更安全。job\u date\u start似乎有时间成分。您需要一个日期范围或仅需要日期:
WHERE job_date_start >= curdate() + interval 1 day and
job_date_start < curdate() + interval 2 day ;
第一种方法对于索引更安全。在比较日期和日期时间时,日期时间不会自动减少为日期,而是将日期延长为日期时间,其时间设置为00:00:00。您不会返回该行,因为时间戳“2021-02-26 12:00:00”时间戳“2021-02-26 00:00:00”。@ThorstenKettner-现在有意义了-那么,无论何时选择明天最简单的方法是什么?我想选择第二天,即使现在是2021-02-25 23:59:59,作业日期开始是2021-02-26 01:01:00..Gordon的第一个查询是我通常使用的,因为表中有大量的天,datetime列上有一个索引,DBMS可以非常快速地运行查询,因为它可以快速地找到几行,就像我们在电话簿中很快找到姓氏一样,因为它们是索引的,即条目是按姓氏排序的。戈登的另一个查询的优点是更容易阅读。但速度可能慢得多。在将日期与日期时间进行比较时,日期时间不会自动缩减为日期,而是将日期扩展为日期时间,并将其时间设置为00:00:00。您不会返回该行,因为时间戳“2021-02-26 12:00:00”时间戳“2021-02-26 00:00:00”。@ThorstenKettner-现在有意义了-那么,无论何时选择明天最简单的方法是什么?我想选择第二天,即使现在是2021-02-25 23:59:59,作业日期开始是2021-02-26 01:01:00..Gordon的第一个查询是我通常使用的,因为表中有大量的天,datetime列上有一个索引,DBMS可以非常快速地运行查询,因为它可以快速地找到几行,就像我们在电话簿中很快找到姓氏一样,因为它们是索引的,即条目是按姓氏排序的。戈登的另一个查询的优点是更容易阅读。但是它可以慢得多。好的,这完全可以解释为什么会发生。。我用了后者,因为它看起来干净多了。。我把它当作一个通知。。没有任何涉及Dok的索引完全可以解释为什么会发生这种情况。。我用了后者,因为它看起来干净多了。。我把它当作一个通知。。没有涉及索引