我还是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'
答案 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