【发布时间】:2012-07-02 10:47:07
【问题描述】:
我有一个表格,其中一列是“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 的解决方案?
【问题讨论】:
标签: sql postgresql date select date-range