MySQL查询日期
可能重复:MySQL查询日期,mysql,Mysql,可能重复: 我需要一个MySQL查询,它将选择一些包含今天日期的数据。我构建了以下查询: SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha FROM CRM_TRATATIVAS GROUP BY CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha, CRM_TRATATIVAS.ID_Categoria HAVING (((CRM_TRATATIVAS.ID_Vendedor)=10
我需要一个MySQL查询,它将选择一些包含今天日期的数据。我构建了以下查询:
SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVAS
GROUP BY CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha, CRM_TRATATIVAS.ID_Categoria
HAVING (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or (CRM_TRATATIVAS.ID_Vendedor)=32) AND ((CRM_TRATATIVAS.Fecha)=Date()) AND ((CRM_TRATATIVAS.ID_Categoria)=14));
如果我去掉=Date(),它就会工作。你知道问题出在哪里吗
最后的数据显示没有括号和点的情况下是这样的(我找不到如何制作表格
Fecha Vendedor
2012-12-03 10:12:13 (10)
2012-12-03 12:14:16 (10)
2012-12-03 09:15:46 (29)
2012-12-03 13:35:56 (32)
修正 我通过使用此查询修复了此问题
SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVASGROUP BY CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha, CRM_TRATATIVAS.ID_Categoria
HAVING (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or (CRM_TRATATIVAS.ID_Vendedor)=32) AND ((DATE(CRM_TRATATIVAS.Fecha)) = CURDATE()) AND ((CRM_TRATATIVAS.ID_Categoria)=14));
由于Fecha是一个DATETIME
列,我在引用之前添加了Date,以便将其转换为日期。尝试更改
((CRM_TRATATIVAS.Fecha)=Date())
到
MySQL函数需要一个参数,它本身不返回当前日期。您也可以使用该函数而不是date(NOW())
尝试更改
((CRM_TRATATIVAS.Fecha)=Date())
到
MySQL函数需要一个参数,它本身不返回当前日期。您也可以使用该函数而不是
date(NOW())
我想您可能需要以下内容:
SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32)
AND c.Fecha = Curdate()
AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;
注意:我更新了它以使用WHERE
而不是HAVING
子句。当存在需要筛选的聚合函数时,可以使用HAVING
子句。此外,我不确定为什么要使用groupby
子句您的SELECT
列表中没有聚合函数
如果您的日期Fecha
包含日期和时间,并且您只希望匹配日期部分,那么您可能希望使用:
SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32)
AND Date(c.Fecha) = Curdate()
AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;
我认为您可能需要以下内容:
SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32)
AND c.Fecha = Curdate()
AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;
注意:我更新了它以使用WHERE
而不是HAVING
子句。当存在需要筛选的聚合函数时,可以使用HAVING
子句。此外,我不确定为什么要使用groupby
子句您的SELECT
列表中没有聚合函数
如果您的日期Fecha
包含日期和时间,并且您只希望匹配日期部分,那么您可能希望使用:
SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32)
AND Date(c.Fecha) = Curdate()
AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;
查询中缺少什么吗?如果不需要聚合函数的形式,我可能不会使用GROUPBY/HAVING子句 例如,查询如何:
SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVAS
WHERE (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or
(CRM_TRATATIVAS.ID_Vendedor)=32) AND ((CRM_TRATATIVAS.Fecha)=Date()) AND
((CRM_TRATATIVAS.ID_Categoria)=14));
查询中缺少什么吗?如果不需要聚合函数的形式,我可能不会使用GROUPBY/HAVING子句 例如,查询如何:
SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVAS
WHERE (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or
(CRM_TRATATIVAS.ID_Vendedor)=32) AND ((CRM_TRATATIVAS.Fecha)=Date()) AND
((CRM_TRATATIVAS.ID_Categoria)=14));
尝试更改:
CRM_TRATATIVAS.Fecha=Date()
为此:
DATE(CRM_TRATATIVAS.Fecha)=CURDATE()
CURDATE()
返回当前日期,date(Fecha)
只返回Fecha
的日期部分(不含小时、分钟和秒)。我还建议您以这种方式编写查询,看起来更简洁:
SELECT Distinct
CRM_TRATATIVAS.ID_Categoria,
CRM_TRATATIVAS.ID_Vendedor,
CRM_TRATATIVAS.Fecha
FROM
CRM_TRATATIVAS
WHERE
CRM_TRATATIVAS.ID_Vendedor in (10, 29, 32)
AND DATE(CRM_TRATATIVAS.Fecha) = CURDATE()
AND CRM_TRATATIVAS.ID_Categoria=14
尝试更改:
CRM_TRATATIVAS.Fecha=Date()
为此:
DATE(CRM_TRATATIVAS.Fecha)=CURDATE()
CURDATE()
返回当前日期,date(Fecha)
只返回Fecha
的日期部分(不含小时、分钟和秒)。我还建议您以这种方式编写查询,看起来更简洁:
SELECT Distinct
CRM_TRATATIVAS.ID_Categoria,
CRM_TRATATIVAS.ID_Vendedor,
CRM_TRATATIVAS.Fecha
FROM
CRM_TRATATIVAS
WHERE
CRM_TRATATIVAS.ID_Vendedor in (10, 29, 32)
AND DATE(CRM_TRATATIVAS.Fecha) = CURDATE()
AND CRM_TRATATIVAS.ID_Categoria=14
您能否确认
CRM\u-tractivas.Fecha
生成的日期格式为YYYY-MM-DD
?我不知道它是否有区别,它是YYYY-MM-DD HH:MM:ssFecha
的数据类型是什么?它是date
、DATETIME
还是TIMESTAMP
?查询应该做什么?它是DATET我想是的。这是一张CRM的表格,它要做的是得到一份所有“Tratatias”的列表,“Vendedores”代码10、29和32已经完成了。“Tratatias”类别被过滤以仅显示代码10。您能否确认CRM\u-tractivas.Fecha
生成的日期格式为YYYY-MM-DD
?我不知道它是否有区别,它是YYYY-MM-DD HH:MM:ssFecha
的数据类型是什么?它是date
、DATETIME
还是TIMESTAMP
查询应该做什么?我想这是一个日期时间。它是一个来自CRM的表,它应该做的是得到一个列表,列出“Vendedores”代码10、29和32今天所做的所有“Tratativa”。Tratativa类别被过滤以仅显示代码10。分组依据
将删除重复项。@ypercube我同意这样做,这就是为什么我只注释掉了该子句而没有删除它。我可能会在分组依据
上使用一个不同的
,这给了我一个空答案。我在Fecha列中有条目,例如2012-12-03 15:38:16.所有的答案都是一样的。@user1873567您能编辑您的OP并发布一些示例数据和期望的结果吗?GROUP BY
将删除重复项。@ypercube我同意会的,这就是为什么我只注释掉了该子句,而没有删除它。我可能会在GROUP BY
上使用一个DISTINCT
>这给了我一个空答案。我在Fecha列中有条目,例如2012-12-03 15:38:16。所有答案都给了我相同的答案。@user1873567你能编辑你的OP并发布一些示例数据和期望的结果吗?谢谢,这是答案!只有我当地的IT专家在我看到这个答案之前找到了它。谢谢,这是答案!只有我当地的IT专家在我看到这个答案之前你就找到了。