繁体   English   中英

选择使用getdate()查询到SQL Server 15天后?

[英]select query using getdate() to after 15 days in sql server?

name   amount  date
---------------------------------------
xxx     1000   2014-04-20 12:53:23.983
yyy     1500   2014-04-25 12:53:23.983

我的输出是这样的:

name  amount  date
--------------------------------------
xxx     1000  2014-04-20 12:53:23.983

我的查询:

alter proc K_VM_GetTaxdetails
as
begin
   select name, amount, date 
   from K_VM_TaxDetails
   where DATEADD(day, -15, GETDATE()) = date 
end 

我已经尝试过这种方法,但是没有得到所需的输出。

如果我的表中有一个日期= 2014-04-20 12:53:23.983,我想显示从该日期起15天之前的所有数据。

如何在何处写信?

这将显示过去15天的所有行:

declare @now = select cast(floor(cast(getdate() as float)) as datetime); -- truncate time from datetime

select name, amount, date from K_VM_TaxDetails 
       where date >= dateadd(day, -15, @now);

这将显示15天前一天的所有行:

declare @now = select cast(floor(cast(getdate() as float)) as datetime); -- truncate time from datetime

select name,amount,date from K_VM_TaxDetails 
       where date >= dateadd(day, -15, @now) and 
             date <  dateadd(day, -14, @now);

这将为您提供15天前的所有数据

alter proc K_VM_GetTaxdetails
as
begin
   declare @d datetime = dateadd(day, datediff(day, -15, getdate()), 0)
   select name, amount, date 
   from K_VM_TaxDetails
   where date >= @d -- retrieve from
         and date < dateadd(day, 1, @d) -- retrieve to
end 

显示日期比当前日期至少早15天:

select name,amount,date from K_VM_TaxDetails
where  date <= DATEADD(day, -15, GETDATE())

我建议只将日期与日期部分而不是时间进行比较,因为有时在日期比较中包含时间有时会提供错误的结果。

下面的查询删除时间部分并仅比较日期。

select name, amount, date 
   from K_VM_TaxDetails
   where (convert(date,[date]) >= DATEADD(day, -15, convert(date,GETDATE())) and convert(date,[date]) <= convert(date,GETDATE()))
alter proc K_VM_GetTaxdetails
as
begin
   select name, amount, date 
   from K_VM_TaxDetails
   where DATEADD(day, -15, SYSDATETIME()) = date 
end 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM