[英]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.