我如何在mysql中计算两列?

时间:2017-06-08 18:52:03

标签: mysql

我想在mysql中计算两列。其中一列是一个字符串,但另一个是像06/08/2017那样的日期,当我查询时,我得到0个结果。

SELECT count(*) FROM `castigos` WHERE inicio_normal=05/06/2017 AND cod_emplazamiento=1

我有这些数据的条目,但它没有向我显示任何内容。也许日期中的数据类型是错误的?

我该怎么办? enter image description here

3 个答案:

答案 0 :(得分:0)

将日期字段添加到您的选择和分组中。否则,mysql扩展无法识别您希望按日期分组,并将所有结果聚合为1列。而且因为你得到0计数,你就不能使用子句。

您的日期格式似乎格式不正确。通常为YYYY / MM / DD格式(标准格式); 或使用SELECT STR_TO_DATE('17/09/2010','%d/%m/%Y');

指定格式

MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.

下面使用隐式转换和默认日期格式将字符串日期转换为有效日期。

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,如果你给我们一个欧洲格式的日期 - 年/月/日),那么你的查询会找到你向我们展示的行。