主要问题是,我存储在数据库 datetime 中,而不是日期(我需要的)。好吧,没关系。
我每天都会存储数千份报告。
我需要将我的 datetime_view 左移 10 个(以缩短时间),一切都很好。除了这个。我想弄清楚为什么我必须加上条件+ future 的某一天?否则它不会搜索到我想要的内容。
SELECT
LEFT(datetime_view,10),
count(type)
FROM reports
WHERE
type IN (1,2,5)
AND
datetime_view>='2012-10-28'
AND
datetime_view<='2012-11-04'
group by LEFT(datetime_view,10);
你可以看到我必须从 future 开始寻找。为什么??
它给了我从 28.10 到 3.11 的输出....
最佳答案
不要对日期/时间值使用字符串操作。 MySQL 有一个huge set of functions用于日期/时间操作。尝试一下
GROUP BY DATE(datetime_view)
相反,它将仅提取日期时间字段的日期部分。您的字符串操作不符合 y10k 标准。使用 date() 函数是。
对于加一天
,请考虑如何进行比较:普通日期值在用于日期/时间比较时,具有隐式 00:00:00
code> 附加的时间值,例如所有日期的时间均为“午夜”。
关于mysql - 为什么这个 MySQL SELECT 不包含正确的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210581/