编写SQL查询日期范围以从已知结束日期检索开始日期

时间:2015-11-17 21:26:59

标签: mysql sql

从标题听起来很糟糕,但它让我难过。场景是我需要编写一个查询来获取来自fiscal_month_begin_date列的min(start_date)。此数据集(查询)将在“SQL报告”构建器中运行,我需要构建查询,以便在有人想要时,他们可以通过选择以下任一方式检索数据:当前月份,3个月或6个月。作为构建查询的新手,我遇到了解如何将整个事物结合在一起的问题。以下是查询现在的样子:

 SELECT *
   from date_Table  
     where(
      Select fiscal_date
         from date_table
           where full_date >= TO_DATE('5/8/2015 12:00:00 AM',      'mm/dd/yyyy HH:MI:SS AM'));

所以我可以编写一个返回开始日期的查询,问题是我需要从今天开始的6个月,从月的第一天开始,结束日期是今天或昨天。

我希望你们都能提供帮助。

2 个答案:

答案 0 :(得分:1)

对于此声明变量并尝试此

declare @running_for datetime;
 set @running_for = getdate();

SELECT *
   from date_Table  
     where(
      Select fiscal_date 
         from date_table d
  where 
 (datepart(m,d.full_date) = DATEPART(m, DATEADD(m, -6, getdate())))
  and 
  d.full_date <= @running_for-1   --- if it is yesterday
// d.full_date <= @running_for --- if it is today

答案 1 :(得分:0)

将不属于数据库的计算与查询分开。然后从更简单的部分构建您的查询以获得您想要的内容。

您的计算包括开始日期等内容。它与数据库中的内容无关,所以首先进行计算。

对于查询,请尝试这些;

  • 选择今天的数据
  • 选择昨天的数据
  • 昨天和今天选择
  • 选择当前月份数据
  • 选择上个月的数据
  • 选择上一个月和当前月份

通过解决这些更简单的案例,你应该能够看到你的解决方案。