作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行查询以获取介于特定日期(本例中为当前日期和 7 天前)之间的行。
我试着把它写成:
SELECT *
FROM faulttracker.ft_v_cases
WHERE DATE(cs_created) BETWEEN DATE(NOW()) AND DATE(NOW()-INTERVAL 7 DAY)
ORDER BY cs_created DESC;
但它返回了 0 行。我不明白为什么它不起作用,我尝试将其重写为:
SELECT *
FROM faulttracker.ft_v_cases
WHERE DATE(cs_created) <= DATE(NOW())
AND DATE(cs_created) >= DATE(NOW()-INTERVAL 7 DAY)
ORDER BY cs_created DESC;
哪个确实有效。
为什么第一个返回 0 行,但第二个按预期工作?据我所知,它们在功能上应该是等价的。
cs_created 是一个日期时间。
最佳答案
根据documentation , BETWEEN 需要以下格式:
expr BETWEEN min AND max
在您的第一个示例中,您将最小值放在最后。
尝试使用:
SELECT *
FROM faulttracker.ft_v_cases
WHERE DATE(cs_created) BETWEEN DATE(NOW()-INTERVAL 7 DAY) AND DATE(NOW())
ORDER BY cs_created DESC;
关于MySQL 对日期和 BETWEEN 的陌生感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4932982/
我是一名优秀的程序员,十分优秀!