我有这个查询,我提供了迄今为止和起始日期。
SELECT *
FROM sales
WHERE date between to-date AND from-date;
现在我想使用以下参数执行此查询
to-date = Oct-2015
some-other-date = Oct-2015
那就是我想要整个月的记录。
在具有 to
和 from
dates
的查询中,我该如何执行此操作,前提是它适用于月份可能的两种情况既相同又不同。
更新:
列
的dataType
日期
是日期
最佳答案
您可以使用如下表达式找到包含任何给定时间戳的月份的第一天。例如,通过使用时间戳 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 语句更易于阅读。
关于mysql - 在sql中查找一整月的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110664/