我想在mysql中计算两列。其中一列是字符串,另一列是类似于06/08/2017的日期,当我执行查询时,我得到0个结果。
SELECT count(*) FROM `castigos` WHERE inicio_normal=05/06/2017 AND cod_emplazamiento=1
我有这些数据的条目,但它没有向我显示任何东西。也许日期中的数据类型是错误的?
我该怎么办?

发布于 2017-06-09 02:56:23
将日期字段添加到您的选择中,并按其分组。否则,mysql扩展无法识别您想要按日期分组,并将所有结果聚合到一列中。因为你得到的是0计数,你的where子句肯定不工作了。
您的日期格式似乎不正确。通常是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否则,就是在做数学运算,并将该日期与为该日期存储的数字进行比较。
了解日期应该存储在date数据类型中,当您查询日期时,您将传入一个字符串,该字符串将转换为date数据类型进行比较。因此,您需要使用标准格式,或者将字符串转换为日期,以便数据库引擎知道如何将您的格式转换为日期。
发布于 2017-06-09 02:56:48
试试这个:
SELECT count(*) FROM `castigos` WHERE inicio_normal="05/06/2017" AND cod_emplazamiento=1 GROUP BY inicio_normal发布于 2017-06-09 03:10:36
,其中inicio_normal=05/06/2017
如果你将3除以6,那么到2017年,你会得到一个非常小的值。如果您使用reformat this as a date (例如20170605,如果您给我们一个欧洲格式的日期- dd/mm/yyyy),那么您的查询将找到您向我们显示的行。
https://stackoverflow.com/questions/44443495
复制相似问题