首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询日期

MySQL查询日期
EN

Stack Overflow用户
提问于 2012-12-03 19:08:21
回答 4查看 115关注 0票数 1

可能重复: Mysql query: retrieve current date query

我需要一个MySQL查询,它将选择一些包含今天日期的数据。我构建了以下查询:

代码语言:javascript
复制
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()取走,它就能工作了。有什么好主意吗?

最后的数据显示是这样的东西,没有括号和点(我找不到如何做一个表!

代码语言:javascript
复制
 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)

修好了!

我通过使用这个查询进行了修正。

代码语言:javascript
复制
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));

由于into是一个DATETIME列,所以我在引用之前添加了date,以便将其转换为日期。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-03 19:54:36

试着改变:

代码语言:javascript
复制
CRM_TRATATIVAS.Fecha=Date()

在这方面:

代码语言:javascript
复制
DATE(CRM_TRATATIVAS.Fecha)=CURDATE()

CURDATE()返回当前日期,DATE(Fecha)只返回Fecha的日期部分(没有小时、分钟和秒)。我还建议您以这样的方式编写查询,这看起来更干净:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2012-12-03 19:13:52

我想你可能需要以下几点:

代码语言:javascript
复制
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子句用于需要对其进行筛选的聚合函数。另外,我不知道为什么要使用GROUP BY子句,在SELECT列表中没有聚合函数。

如果您的date Fecha有日期和时间,并且只想匹配date部分,那么您可能需要使用:

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2012-12-03 19:13:19

试着改变

代码语言:javascript
复制
((CRM_TRATATIVAS.Fecha)=Date())

代码语言:javascript
复制
((CRM_TRATATIVAS.Fecha)=Date(NOW()))

MySQL DATE()函数需要一个参数,它本身不返回当前日期。您也可以只使用CURDATE()函数而不是DATE(NOW())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13689978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档