Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询日期_Mysql - Fatal编程技术网

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:ss
Fecha
的数据类型是什么?它是
date
DATETIME
还是
TIMESTAMP
?查询应该做什么?它是DATET我想是的。这是一张CRM的表格,它要做的是得到一份所有“Tratatias”的列表,“Vendedores”代码10、29和32已经完成了。“Tratatias”类别被过滤以仅显示代码10。您能否确认
CRM\u-tractivas.Fecha
生成的日期格式为
YYYY-MM-DD
?我不知道它是否有区别,它是YYYY-MM-DD HH:MM:ss
Fecha
的数据类型是什么?它是
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专家在我看到这个答案之前你就找到了。