MySQL:如何在年和月之间做日期(没有日期)

q8l4jmvw  于 12个月前  发布在  Mysql
关注(0)|答案(4)|浏览(164)

如果mysql数据库中有2列:year; month,现在我想在不指定日期的情况下基于年-月范围进行求和计算。2010-11到2011-07,我该如何实现呢?

SELECT * FROM TT WHERE F1 BETWEEN '2010-11' AND '2011-07'

这不管用

uelo1irk

uelo1irk1#

如果你想从2010-11到2011-07的所有行,直到8月的第一天:

SELECT * FROM `table` 
WHERE `date_column` BETWEEN '2010-11-01' AND '2011-08-01'

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

SELECT * FROM `table`
WHERE YEAR(`date_column`)=2011 AND MONTH(`date_column`) BETWEEN 1 AND 6

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

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)
9fkzdhlc

9fkzdhlc2#

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

SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01' AND '2011-07-31'

如果F1的类型为datetime,则为

SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01 00:00:00' AND '2011-07-31 23:59:59'

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

SELECT * FROM TT WHERE DATE(CONCAT(year_column, '-', month_column, '-01')) 
BETWEEN '2010-11-01' AND '2011-07-31'
vwoqyblh

vwoqyblh3#

我遇到了同样的情况,并成功地做到了这一点:

SELECT * FROM `TT` WHERE CONCAT(year_column,month_column) between '201011' and '201107';

希望它也能帮助其他人。

z9zf31ra

z9zf31ra4#

你也可以使用它一年或多年
例如数据在:year = 2022,month = 7和year = 2023,month = 6

SELECT * FROM `TT` 
WHERE (year > 2022 OR (year = 2022 AND month >= 7)) 
AND (year < 2023 OR (year = 2023 AND month <= 6))

相关问题