MySQL选择一年中的哪一天和哪一年之间的记录
我有一个表格,我在其中插入年、月数、周数和年的日数以及每条记录 我使用这些字段来过滤记录而不是完整日期,因为我有数百万条记录,我想通过比较整数而不是日期来提高性能 我能够根据日期和年份选择日期之间的记录。如果年份相同,查询效果很好,但是一旦我更改了年份,查询就不起作用了,因为我正在使用AND 表如下所示:MySQL选择一年中的哪一天和哪一年之间的记录,mysql,sql,date,select,date-range,Mysql,Sql,Date,Select,Date Range,我有一个表格,我在其中插入年、月数、周数和年的日数以及每条记录 我使用这些字段来过滤记录而不是完整日期,因为我有数百万条记录,我想通过比较整数而不是日期来提高性能 我能够根据日期和年份选择日期之间的记录。如果年份相同,查询效果很好,但是一旦我更改了年份,查询就不起作用了,因为我正在使用AND 表如下所示: 身份证 一天 周 月 年 完整日期 这是工作查询 SELECT COUNT(id) AS records_count FROM table1 WHERE table1.day >=
- 身份证
- 一天
- 周
- 月
- 年
- 完整日期
SELECT COUNT(id) AS records_count
FROM table1
WHERE table1.day >= 176
AND table1.day <= 275
AND table1.year <= 2015
AND table1.year >= 2015
选择COUNT(id)作为记录\u COUNT
来自表1
其中表1.day>=176
表1.1日=275
表1.day选择COUNT(id)作为记录\u COUNT
来自表1
其中(年=2014,日>=275)
或者(year=2015和day您存储日期的方法与您想要做的完全不符。一般形式为:
where (year = 2014 and day >= 275 or year > 2014) and
(year = 2015 and day <= 176 or year < 2015)
其中(年份=2014,日期>=275或年份>2014)和
(年份=2015,日期=makedate(2014,275)和日期通用解决方案(例如,可以从2000年到2020年)
选择计数(id)作为cnt
来自tbl
式中((年>最小年以下,年<最大年以上)
和((年最小年和年最大年)
或(年=最小年和天>265)
或(年=最大年和日<300)))
问题在于,您需要计算年份小于或等于2014年、同一年份大于或等于2015年的记录。没有任何数字小于或等于2014年、同一时间大于或等于2015年。OP注意:此答案仅适用于相邻年份(或同一年份)。它不能概括为任何一对日期。删除了我的评论,正如你所说的那样。很有魅力。谢谢!
SELECT COUNT(id) AS records_count
FROM table1
WHERE (year = 2014 and day >= 275)
OR (year = 2015 and day <= 176)
where (year = 2014 and day >= 275 or year > 2014) and
(year = 2015 and day <= 176 or year < 2015)
where date >= makedate(2014, 275) and date <= makedate(2015, 176)
SELECT COUNT(id) AS cnt
FROM tbl
WHERE ((year > under_min_year and year < above_max_year)
and ((year <> min_year and year <> max_year)
or (year = min_year and day > 265)
or (year = max_year and day < 300)))