首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中使用between

问如何在mysql中使用between
EN

Stack Overflow用户
提问于 2016-03-21 01:34:25
回答 3查看 37关注 0票数 0

我正在尝试根据域名按月过滤日期。以下是数据示例;

Domain - id : 1,2

域名标签: User1,User2

Fact_data - domain_id : 1,2

Fact_data -日期:从'2016-01-01‘到'2016-03-20’

这是我尝试过的sql,但不知何故出现了错误。

代码语言:javascript
复制
SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS date
FROM domain d, fact_data f 
WHERE f.domain_id = d.id
AND f.date >= `2016-01-01` AND f.date <=`2016-01-31`
GROUP BY `domain_id`;

我希望结果是这样的;

代码语言:javascript
复制
|   domain  |   count   |   date   |
 ----------------------------------
|   User1   |     3     | 2016-01  |
|   User2   |     1     | 2016-01  |
|   User1   |     2     | 2016-02  |
|   User1   |     1     | 2016-03  |
|   User2   |     2     | 2015-03  |
EN

回答 3

Stack Overflow用户

发布于 2016-03-21 01:43:56

我猜这能行得通:

代码语言:javascript
复制
SELECT d.label,
       COUNT(*) AS count,
       date_format(f.date, 'YYYY-MM') AS `date`
  FROM domain d JOIN fact_data f ON f.domain_id = d.id
 WHERE f.date >= '2016-01-01' AND f.date <='2016-01-31'
 GROUP BY d.label;
票数 0
EN

Stack Overflow用户

发布于 2016-03-21 02:15:25

正如其他人已经指出的,你应该在字符串中使用单引号‘或双引号",如果列名称与关键字冲突,如日期或组,则需要反引号`。

这听起来像是在尝试按年、月和域进行分组。我说的对吗?如果是这样的话,您的查询可能如下所示:

代码语言:javascript
复制
SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS `date`
FROM domain d, fact_data f 
WHERE f.domain_id = d.id
AND f.date >= '2016-01-01' AND f.date <='2016-01-31'
GROUP BY year(`date`), month(`date`), `domain_id`;

您问题的标题表明您希望使用BETWEEN。在这种情况下,您的查询将如下所示:

代码语言:javascript
复制
SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS `date`
FROM domain d, fact_data f 
WHERE f.domain_id = d.id
AND f.date BETWEEN '2016-01-01' AND '2016-01-31'
GROUP BY year(`date`), month(`date`), `domain_id`;
票数 0
EN

Stack Overflow用户

发布于 2016-03-21 12:18:40

感谢大家,sql已经成功运行了!

然而,我没有得到日期。

代码语言:javascript
复制
|   domain  |   count   |   date   |
 ----------------------------------
|   User1   |     3     | YYYY-MM  |
|   User2   |     1     | YYYY-MM  |

它返回的'YYYY-MM‘不像实际的数字(例如: 2016-01'),而且我不能每月获取它,而只能像上面那样为每个域名获取一次。

有人知道要添加或编辑什么吗?

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

https://stackoverflow.com/questions/36117095

复制
相关文章

相似问题

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