MSSQL Query获取1个月到固定日期之间的值

时间:2014-03-05 18:01:35

标签: sql sql-server date datetime

我还没办法做到。

这是个主意:

select sum(amount) 
from  account
where amountdate >= 'CURRENTSYSTEMYEAR/CURRENTSYSTEMMONTH/10'  
   and amountdate <= 'CURRENTSYSTEMYEAR(+1 if it's december) / CURRENTSYSTEMMONTH + 1/10'

我知道日期查询不能以这种方式工作,所以我使用了datepart和dateadd,但没有成功。

例如,如果是2014年3月5日,我希望我的日期范围是2014年3月10日到2014年4月10日。

2 个答案:

答案 0 :(得分:1)

您可以转换为字符串并返回日期:

select sum(amount)
from account
where amountdate >= convert(datetime, convert(varchar(8), getdate(), 120) + '10')
    and amountdate <= dateadd(month, 1, convert(datetime, convert(varchar(8), getdate(), 120) + '10'))

以下是值:

select convert(datetime, convert(varchar(8), getdate(), 120) + '10')
-- 2014-03-10 today (2014-03-05)

select dateadd(month, 1, convert(datetime, convert(varchar(8), getdate(), 120) + '10'))
-- 2014-04-10 today (2014-03-05)

答案 1 :(得分:0)

SELECT SUM(amount) 
FROM  account
WHERE amountdate >= CAST(YEAR(GETDATE()) AS CHAR(4))+'/'+CAST(MONTH(GETDATE()) AS CHAR(2))+'/10' 
   and amountdate <= DATEADD(MM,1, CAST(YEAR(GETDATE()) AS CHAR(4))+'/'+CAST(MONTH(GETDATE()) AS CHAR(2))+'/10' )