首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql:如何在按年和按月之间进行日期(无日期)

mysql:如何在按年和按月之间进行日期(无日期)
EN

Stack Overflow用户
提问于 2015-10-19 17:56:23
回答 3查看 11.4K关注 0票数 4

如果mysql数据库中有两列: year;month,那么现在我想要基于年-月范围进行求和计算,而不指定日期。比方说2010-11到2011-07,我该如何实现呢?

代码语言:javascript
复制
SELECT * FROM TT WHERE F1 BETWEEN '2010-11' AND '2011-07'

,它不工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-19 18:04:13

如果您想要从2010-11到2011-07的所有行,直到8月1日:

代码语言:javascript
复制
SELECT * FROM `table` 
WHERE `date_column` BETWEEN '2010-11-01' AND '2011-08-01'

如果要获取1月至6月的完整月份的所有行,请使用此查询:

代码语言:javascript
复制
SELECT * FROM `table`
WHERE YEAR(`date_column`)=2011 AND MONTH(`date_column`) BETWEEN 1 AND 6

如果你想使用不同的年份,那么为每一年编写不同的查询:

代码语言:javascript
复制
SELECT * FROM `table` 
WHERE 
  (YEAR(`date_column`)=2010 AND MONTH(`date_column`) BETWEEN 11 AND 12) OR 
  (YEAR(`date_column`)=2011 AND MONTH(`date_column`) BETWEEN 1 AND 7)
票数 8
EN

Stack Overflow用户

发布于 2015-10-19 18:05:47

如果F1的类型为date,请尝试此操作

代码语言:javascript
复制
SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01' AND '2011-07-31'

如果F1的类型为datetime,则会出现这种情况

代码语言:javascript
复制
SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01 00:00:00' AND '2011-07-31 23:59:59'

如果年份和月份保存在不同的列中,则使用此

代码语言:javascript
复制
SELECT * FROM TT WHERE DATE(CONCAT(year_column, '-', month_column, '-01')) 
BETWEEN '2010-11-01' AND '2011-07-31'
票数 2
EN

Stack Overflow用户

发布于 2019-06-02 19:59:16

我遇到了同样的情况,并通过这样做成功地管理:

代码语言:javascript
复制
SELECT * FROM `TT` WHERE CONCAT(year_column,month_column) between '201011' and '201107';

希望它也能帮助其他人..

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

https://stackoverflow.com/questions/33211526

复制
相关文章

相似问题

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