我想在mysql中计算两列。其中一列是一个字符串,但另一个是像06/08/2017那样的日期,当我查询时,我得到0个结果。
SELECT count(*) FROM `castigos` WHERE inicio_normal=05/06/2017 AND cod_emplazamiento=1
我有这些数据的条目,但它没有向我显示任何内容。也许日期中的数据类型是错误的?
答案 0 :(得分:0)
将日期字段添加到您的选择和分组中。否则,mysql扩展无法识别您希望按日期分组,并将所有结果聚合为1列。而且因为你得到0计数,你就不能使用子句。
您的日期格式似乎格式不正确。通常为YYYY / MM / DD格式(标准格式);
或使用SELECT STR_TO_DATE('17/09/2010','%d/%m/%Y');
下面使用隐式转换和默认日期格式将字符串日期转换为有效日期。
SELECT inicio_normal, count(*)
FROM `castigos`
WHERE inicio_normal='2017/05/06'
AND cod_emplazamiento=1
GROUP BY inicio_normal
否则进行数学运算并将该日期与日期存储的数字进行比较。
了解日期应存储在日期数据类型中,并且当您查询日期时,您将传入一个字符串,该字符串将被转换为日期数据类型以进行比较。因此,您需要使用标准格式,或者将字符串转换为日期,以便db引擎知道如何将格式转换为日期。
答案 1 :(得分:0)
试试这个:
SELECT count(*) FROM `castigos` WHERE inicio_normal="05/06/2017" AND cod_emplazamiento=1 GROUP BY inicio_normal
答案 2 :(得分:0)
WHERE inicio_normal = 05/06/2017
如果你将3乘以6然后到2017年,那么你的价值确实很小。 OTOH如果你reformat this as a date(例如20170605,如果你给我们一个欧洲格式的日期 - 年/月/日),那么你的查询会找到你向我们展示的行。