首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql中查找一个月的数据

在sql中查找一个月的数据
EN

Stack Overflow用户
提问于 2015-01-23 13:09:56
回答 2查看 1.4K关注 0票数 0

我有这个查询,我提供的日期和日期。

代码语言:javascript
复制
SELECT * 
FROM sales 
WHERE date between to-date AND from-date;

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

代码语言:javascript
复制
to-date = Oct-2015

some-other-date = Oct-2015

那就是我要一个月的记录。

在有tofrom dates的查询中,我将如何做到这一点,前提是它可以在两个场景中工作,在这两个场景中,月份可能是相同的,也可能是不同的。

更新:

dataType for column date is date

EN

回答 2

Stack Overflow用户

发布于 2015-01-23 13:26:48

您可以在这个月的第一天找到包含任何给定时间戳的表达式,如下所示。例如,通过使用时间戳NOW(),可以找到当前月份的第一天。

代码语言:javascript
复制
(DATE(NOW() - INTERVAL DAYOFMONTH(DATE(NOW()))

这很方便,因为这样您就可以使用如下的表达式

代码语言:javascript
复制
(DATE(NOW() - INTERVAL DAYOFMONTH(DATE(NOW())) - INTERVAL 1 MONTH

如果你愿意的话,可以找到前一个月的开始。各种日期算法都可用了。

因此,您可以使用如下表达式在当前月份的前一个月使用item_date查找所有记录。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-01-23 13:13:54

代码语言:javascript
复制
select * from sales 
where from-date >= 1-Oct-2015 
and to-date <= 1-Nov-2015

更新

代码语言:javascript
复制
 select * from sales 
where date >= from-date 
and date <= to-date 

这是SQLFIDDLE

您可以从您的tofrom日期中获得月份,并找到该月份的记录。

代码语言:javascript
复制
SELECT * FROM sales
WHERE MONTH('2002-01-03') AND MONTH('2002-01-3')  

使用月份函数的SqlFiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28110664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档