我有这个查询,我提供的日期和日期。
SELECT *
FROM sales
WHERE date between to-date AND from-date;现在,我想使用以下参数执行此查询
to-date = Oct-2015
some-other-date = Oct-2015那就是我要一个月的记录。
在有to和from dates的查询中,我将如何做到这一点,前提是它可以在两个场景中工作,在这两个场景中,月份可能是相同的,也可能是不同的。
更新:
dataType for column date is date
发布于 2015-01-23 13:26:48
您可以在这个月的第一天找到包含任何给定时间戳的表达式,如下所示。例如,通过使用时间戳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语句更易于阅读。
发布于 2015-01-23 13:13:54
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 这是SQLFIDDLE
您可以从您的to和from日期中获得月份,并找到该月份的记录。
SELECT * FROM sales
WHERE MONTH('2002-01-03') AND MONTH('2002-01-3') 使用月份函数的SqlFiddle
https://stackoverflow.com/questions/28110664
复制相似问题