mysql - 在sql中查找一整月的数据

标签 mysql sql

我有这个查询,我提供了迄今为止和起始日期。

SELECT * 
FROM sales 
WHERE date between to-date AND from-date;

现在我想使用以下参数执行此查询

to-date = Oct-2015

some-other-date = Oct-2015

那就是我想要整个月的记录。

在具有 tofrom 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/

相关文章:

php - switch case 在查询中被忽略

mysql - #1241 - 操作数应包含 1 列值和选择

mysql - 如何在 mysql 非常大的表中更快地分组?

sql - 如何根据字段获取行相对于总行数的排名?

sql - 统一元组

sql - 在 PostgreSQL 中按数组元素分组

来自参数或变量的 SQL WHERE IN

php - 试图在laravel中获取非对象错误的属性

mysql - 更改服务器变量 character_set_server

mysql - Flume流到mysql