计算每周2周的SQL

时间:2014-06-18 18:46:17

标签: sql sql-server hardcode

我还是SQL的新手,所以我问这个问题对你来说可能很容易。因此,我正在创建一份报告,报告每周生成前14天(或2周)的资助合同。我知道这必须硬编码到特定的公司。该特定公司的ID是' 55'有人可以帮我这个功能吗?我知道我的查询尚未完成我只是坚持如何输入Date函数。

Create PROC [dbo].[spAdminFundedDateee]

   Begin

        SELECT  c.program_id, d.dealer_code,b.last_name As DealerName, a.account_no, a.vin, 
                ((e.last_name)+','+(e.first_name)) As Name, a.funded_date, a.cancel_refund_date,
                  a.purchase_date,a.miles, a.duration,a.sale_price,a.number_of_payments,
                  a.sales_tax, a.downpayment

        from tDealer d 
    Join tContact b ON d.contact_id = b.contact_id 
    Join tContract a On d.dealer_id = a.dealer_id 
    Join tCompany c ON d.company_id= c.company_id
    Join tContact E On e.contact_id = a.contact_id

        Where c.program_id = 55 And a.funded_date between 

      End

    exec spAdminFundedDateee '05/1/2014','05/30/2014','55'

3 个答案:

答案 0 :(得分:0)

如果a.funded_date是DATETIME那么

a.funded_date between dateadd(day,-14,getdate()) and getdate()

如果a.funded_date是DATE则

 a.funded_date between cast(dateadd(day,-14,getdate()) as date) and cast(getdate() as date)

答案 1 :(得分:0)

为了检查a.funded_date是否在今天和两周前,你将需要几个sql server函数。第一个是GetDate()。这会将当前日期和时间作为日期时间值返回。

现在,您只想检查日期参数(而不是时间)。如果有人在下午1点运行您的存储过程,您不希望从14天前的下午1点之前消除所有数据。从14天前开始,您想要所有数据,无论时间。要解决此问题,我们希望将getDate()更改为仅日期。所以,施放(getDate()作为日期)。今天,这将返回6-18-14。

最后,您想要检查两周前的日期。 dateAdd允许您将指定的任何时间量添加到日期或时间。在这种情况下,您需要14天前的信息。这看起来像dateadd(dd,-14,cast(getDate()作为日期))。

由于介于两者之间是包容性的,所以你现在需要做的就是把它放在一起!

between dateadd(dd, -14, cast(getDate() as date)) and cast(getDate() as date)

答案 2 :(得分:0)

Hey Guys所以我更新了我的Where子句,但是当我运行查询时,我得到了列标题但是有一个空表。当我输入日期的硬编码是否正确?我还是Date函数的新手,所以我知道对你们大多数人来说,这对我来说一定是常识。我想在14天之前对日期进行硬编码,并假设每两周在14天之前的每周一获得资助合同。这是我的第一份报告,所以我为你们有些人认为我应该知道的问题而道歉。我还在学习。

      Alter PROC [dbo].[spAdminFundedDateee]
      As
         Begin
             SELECT  c.program_id, d.dealer_code,b.last_name As DealerName, a.account_no, 
                     a.vin,  ((e.last_name)+','+(e.first_name)) As Name, 
                     a.funded_date, a.cancel_refund_date, a.purchase_date,a.miles, 
                     a.duration,a.sale_price,a.number_of_payments,  a.sales_tax, a.downpayment


      from tDealer d 
       Join tContact b ON d.contact_id = b.contact_id 
       Join tContract a On d.dealer_id = a.dealer_id 
       Join tCompany c ON d.company_id= c.company_id
       Join tContact E On e.contact_id = a.contact_id


     Where c.program_id = 55 And  a.funded_date between '05/19/2014' and '06/02/2014'And 
           a.funded_date between  dateadd(dd, -14, cast(getDate() as date)) and cast(getDate()
           as date)


     END
     GO

    EXEC spAdminFundedDateee 
相关问题