【问题标题】:get last 3 months on date selection获取最近 3 个月的日期选择
【发布时间】:2016-12-28 22:17:22
【问题描述】:

我在 form.aspx fromdate 和 to date 上有 datepicker,当我从日期选择器中选择日期时,我希望在 datepicker 选择的基础上显示最后 3 个月的记录,即如果我从 DEC 中选择日期,则显示最后 3 个月的记录

我试试这个

ALTER PROCEDURE [dbo].[SPMONTH]
@fromdate datetime,
@todate datetime
AS

select DATENAME(MONTH,tblReg.StartDate) AS [Month]
from tblReg
where
tblReg.StartDate>=DATEADD(MONTH,-3,GETDATE())
AND tblReg.EndDate<=GETDATE()
GROUP BY 
DATENAME(MONTH,tblReg.StartDate) 

当我执行此操作时

[SPMONTH] '2016-01-01 00:00:00', '2016-01-30 23:59:59'

结果

Month
August
July
June
May

上述 sp 有效,但是当我从 8 月选择日期时,此显示过去 3 个月和当前月份,而当我从 1 月或另一个月选择日期时,则显示 7 月、6 月和可能的数据,而当我选择 1 月或任何时,我想要其他月份假设我选择 jan 然后想要 dec、nov、oct 和 jan

【问题讨论】:

  • 您没有将日期传递给 SQL。除非“@RegNo”应该保存日期(在这种情况下,它需要一个更好的名称!)。但即便如此,@RegNo 也从未在过程本身中使用过。那么,如果您没有将值传递到代码中,您怎么能期望它动态调整到您选择的值呢?
  • @ADyson 检查更新
  • 你有 2 个变量(@fromdate,@todate),它们在查询中用在哪里?
  • 哪个日期前 3 个月? “fromdate”前 3 个月,或“todate”前 3 个月。或者你想返回两个日期之间的所有月份?目前还不是很清楚你在期待什么。

标签: sql-server date datepicker


【解决方案1】:

您没有在查询中使用传递参数,即@fromdate@todate 未在查询中使用,请在下面的 where 子句中使用此参数

select DATENAME(MONTH,tblReg.StartDate) AS [Month]
from tblReg
where
tblReg.StartDate>=DATEADD(MONTH,-3, @fromdate)
AND tblReg.EndDate<= @todate
GROUP BY 
DATENAME(MONTH,tblReg.StartDate) 

【讨论】:

  • 我试试这个,但这也是 4 月 月 4 月 12 月 1 月 11 月 10 月
  • 我很确定这将提供最近三个月数据的条件,您能否验证两个参数的传递日期格式
  • 日期时间是类型
  • 不,我要求日期格式YYYY/MM/DD 喜欢
  • 哦,那是 yyyy/dd/mm 00:00:000 23:59:59
猜你喜欢
  • 2021-09-14
  • 1970-01-01
  • 2016-03-28
  • 2017-07-27
  • 2018-09-30
  • 2014-09-17
  • 2021-11-01
  • 1970-01-01
  • 2023-02-08
相关资源
最近更新 更多