我有一个表,其中一列是日期,格式为'YYYY-MM-DD'。我能否使用select语句获取一个月范围内的所有数据?比如说,我想获取2012年01月xx日至2013年04月xx日的所有数据。因此,我基本上正在寻找像下面给出的SQL查询:
SELECT * FROM table WHERE date IN BETWEEN '2012-01' AND '2013-04' (INVALID QUERY)
由于每个月都以“01”开头,所以我可以修改上面的查询以调整起始条件。
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND '2013-04' (INVALID QUERY)
现在问题出在结束日期上。我必须手动计算给定月份的最后一天,考虑到该月份的长度、闰年等所有因素,因为如果给定日期无效,则查询将失败。所以目前我正在做这样的事情:
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND 'VALID_MONTH_END_DATE' (VALID Query)
我想知道是否有任何方法可以避免这个有效期结束日期的计算?
澄清
我已经考虑过下个月的第一天,但即使这样,我仍然需要应用一些逻辑,比如如果是12月,下个月将会是明年的1月。我想知道是否有可能只使用SQL来解决这个问题?