我有一个包含year(YEAR(4)
)和month(TINYINT
)列的mysql表。选择一个范围内的所有记录的最佳方式是什么,例如2009-10 .. 2010-02?在mysql中使用年份和月份字段检索范围内的记录
1
A
回答
3
这里是一个广义的解决方案:
Select...
From ...
Where (Year = <StartYear> And Month >= <StartMonth>)
Or (Year > <StartYear> And Year < <EndYear>)
Or (Year = <EndYear> And Month <= <EndMonth>)
2
用途:
WHERE (year = 2009 AND month >= 10)
OR (year = 2010 AND month <= 2)
...或者,使用UNION ALL:
SELECT t.*
FROM TABLE t
WHERE year = 2009 AND month >= 10
UNION ALL
SELECT t.*
FROM TABLE t
WHERE year = 2010 AND month <= 2
UNION ALL
比UNION
快,但不会删除重复。
1
你可能要考虑为2010年2月创建一个名为year_month
另一列存储的日期在YYYYMM
格式,如201002
请务必在其上创建一个索引,并且你还可以创建两个触发器自动更新列在INSERT和ON UPDATE上。
那么你就可以使用:
WHERE year_month BETWEEN 200710 AND 201002
这将使用索引上year_month
。
1
相关问题
- 1. 在Rails3中检索记录的created_by字段以传递给月份和年份?
- 2. 检查日期落在月份和年份范围内
- 3. 使用年份和月份字段选择记录 - SQL Server
- 4. 填写日期范围内的月份和年份?
- 5. 尝试使用Moment得到月份和年份范围
- 6. 如何在JavaScript中使用两年的时间范围内的月份范围
- 7. MySQL。选择年份范围
- 8. MySQL中按年份和月份分组
- 9. 在cakephp中检索基于年份和月份的数据
- 10. MySQL在特定月份,年份之间获取记录
- 11. 日期范围查询忽略月份年份结束和年份开始
- 12. Mysql月份和年份的数据
- 13. 如何从sql数据库检索记录匹配memberID,月份和年份
- 14. Ruby:按年份和月份分组日期范围
- 15. EXCEL:更改月份范围内到月份范围内发生的日期
- 16. 获取两个日期范围内的所有月份和年份的列表
- 17. Mysql - 获取月份和年份#
- 18. MySQL查询匹配月份和年份
- 19. 如何验证使用JavaScript的月份,日期和年份范围?
- 20. 如何从SQL查询中检索月份和年份>
- 21. 查找月份和年份内串
- 22. BootStrap年份范围
- 23. 使用jquery验证月份和年份
- 24. 检索MySQL中特定月份的所有记录
- 25. Django - 需要只能处理年份或年份和月份值的datetime字段
- 26. 每个日期范围的动态月份年份列
- 27. 按年份和月份
- 28. 只月份和年份
- 29. SQL:按月份和年份
- 30. 输入年份在指定范围内
但是如果从2007年10月到2010年2月呢?你不能只替换日期。 – 2010-02-28 01:02:52
@Daniel Vassallo:我会将这些值存储为DATETIME,这样可以缓解您提出的问题的复杂性。如果需要,我会创建一个视图来突破日/月/年。 – 2010-02-28 01:10:39
@OMG:是的,DATETIME会很理想,但我认为OP没有DAY值。只是月和年。 – 2010-02-28 01:13:55