我有这个查询,我提供至今和从约会开始。
SELECT *
FROM sales
WHERE date between to-date AND from-date;
现在我想用以下参数执行此查询
to-date = Oct-2015
some-other-date = Oct-2015
那就是我想要整个月的记录。
如果我有to
和from
dates
的查询,我将如何做到这一点,前提是它适用于月份可能相同且不同的两种情况。
更新
dataType
column
的{p> date
为date
答案 0 :(得分:1)
您可以找到包含任何给定时间戳的月份的第一天,其中包含这样的表达式。例如,通过使用时间戳NOW()
,可以找到当月的第一天。
(DATE(NOW() - INTERVAL DAYOFMONTH(DATE(NOW()))
这很方便,因为那时你可以使用像
这样的表达式(DATE(NOW() - INTERVAL DAYOFMONTH(DATE(NOW())) - INTERVAL 1 MONTH
如果你愿意,可以找到上个月的开头。各种日期算术都可用。
因此,您可以使用以下表达式查找当月前一个月内item_date
的所有记录。
WHERE item_date>=(DATE(NOW()-INTERVAL DAYOFMONTH(DATE(NOW()))- INTERVAL 1 MONTH
AND item_date < (DATE(NOW()-INTERVAL DAYOFMONTH(DATE(NOW()))
请注意,我们将一段时间的结束作为不等式(<
)投射到该时间范围结束之后的那一刻。
您可能会发现此写法很有用。 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/
创建名为TRUNC_MONTH()
的存储函数以执行将任意时间戳转换为该月的第一天通常很有用。它使您的SQL语句更易于阅读。
答案 1 :(得分:0)
select * from sales
where from-date >= 1-Oct-2015
and to-date <= 1-Nov-2015
更新
select * from sales
where date >= from-date
and date <= to-date
您可以从to
和from
日期获得月份并找到该月的记录
SELECT * FROM sales
WHERE MONTH('2002-01-03') AND MONTH('2002-01-3')