php - 按 CURDATE() 过滤查询

标签 php mysql sql

SELECT *
FROM `summary`
WHERE submit_date = curdate()
AND submit_date > '06:00'
AND submit_date < '21:00'
LIMIT 0 , 30

这会提取包括今天在内的所有日期吗? submit_date 是一个显示有 DATETIME 的列,它没有像应该的那样过滤掉它们。我错过了什么?谢谢!

最佳答案

如果它是 DATETIME 列,您的 2 个限制条件应该与 TIME() 返回的值进行比较,并且第一个条件应该限制为 DATE() 部分。

SELECT *
FROM `summary`
WHERE
  /* Truncate to the date only to compare against CURDATE() */
  DATE(submit_date) = curdate()
  /* And truncate to the TIME() to compare against these time literals. */
  /* note also that the time literals may need seconds as well */
  AND TIME(submit_date) > '06:00:00'
  AND TIME(submit_date) < '21:00:00'
LIMIT 0 , 30

关于php - 按 CURDATE() 过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004421/

相关文章:

php - 如何模拟虚拟二进制文件以便测试 exec()/system()/passthru() 函数输出?

php - mysqli_query 不显示任何结果

php - 为什么 MySQLi 阻止我的页面的其余部分解析并停止我的 PHP 脚本?

sql - Postgresql:子查询的替代方法可以使查询更高效?

php - MySQL:使用不同的条件更新不同的列

mysql - SQL:用子查询打破平局

php - 为我的站点创建 "Badges",存储用户徽章的最佳方式?使用 PHP

drupal - Chrome 和 Firefox 自动重定向到特定站点上的 https

php 多个 mySQL 查询

php - 根据值更新列,php mysql