gpt4 book ai didi

MySQL 查询在日期范围内返回错误的结果计数

转载 作者:行者123 更新时间:2023-11-30 22:42:22 24 4
gpt4 key购买 nike

我创建了一个返回日期范围内结果的查询,但是之前的开发人员通过将日期保存为 MySQL 中的 varchar(10) 以及两种格式来打击我(Y-m-dd-m-Y)。

我的问题是,当我选择从 01-June-201511-June-2015 的日期之间的结果时,它在 2015 年 6 月 给了我 18 个结果。

但是当我选择从 01-june-201411-June-2015 之间的结果时>,它给了我 13 June 2015 的结果,它必须是 18 结果,我想。

任务:获取某个日期范围内的新访客总数,但访客表中没有日期,所以我从访客表中获取他的首次访客日期这就是我使用 MIN() 的原因功能

MySQL 查询是:

SELECT min(visits.id), t.id, t.first_name,
visits.date_check_in
FROM `visitor` `t`
JOIN `visit` `visits` ON visits.visitor = t.id
WHERE
((STR_TO_DATE(visits.date_check_in, '%d-%m-%Y') BETWEEN
STR_TO_DATE('11-06-2014', '%d-%m-%Y') AND STR_TO_DATE('11-06-2015',
'%d-%m-%Y'))
OR (STR_TO_DATE(visits.date_check_in, '%Y-%m-%d') BETWEEN
STR_TO_DATE('2014-06-11', '%Y-%m-%d') AND STR_TO_DATE('2015-06-11',
'%Y-%m-%d')) )
AND (t.is_deleted = 0)
AND (visits.is_deleted = 0)
AND (visits.visit_status != 2)
GROUP BY `t`.`id`

请帮助我我做错了什么。我花了大约 4 天的时间思考和做不同的事情,但卡住了。我希望能尽快收到您的来信,谢谢。

最佳答案

如果日期格式不是 Y-m-d,您需要做的就是找出日期格式。如果格式为d-m-Y,将其更改为Y-m-d,然后进行比较,如:

WHERE
IF(SUBSTRING(visits.date_check_in, 5, 1) = '-',
visits.date_check_in,
STR_TO_DATE(visits.date_check_in, '%d-%m-%Y')
) BETWEEN '2014-06-11' AND '2015-06-11'

关于MySQL 查询在日期范围内返回错误的结果计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com