SQL server日期问题

现在我写了个同期:去年一月一号到去年现在的,但是现在加了个年份下拉框(如:2020、2021等等),按照下拉框的年份求前一年1月一号到前一年当前日期的数据



funddealdate BETWEEN '${CONCATENATE(year(today())-1,"-01-01")}' 

AND '${YEARDELTA(today(),-1)}'


用户K0035705 发布于 2021-1-28 14:29 (编辑于 2021-2-1 15:05)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
shirokoLv6资深互助
发布于2021-1-28 14:33(编辑于 2021-2-1 15:13)

前一年整年还是到当前日期

--

参数名是pyear

${if(pyear=year(today())," and funddealdate BETWEEN '"+CONCATENATE(year(today())-1,"-01-01")+"' AND '"+YEARDELTA(today(),-1)+"'","and SUBSTR(funddealdate,1,4)='"+(pyear-1)+"'")}

--

${if(pyear=year(today())," and funddealdate BETWEEN '"+CONCATENATE(year(today())-1,"-01-01")+"' AND '"+YEARDELTA(today(),-1)+"'","and convert(varchar(10),datepart(YYYY,
funddealdate))='"+(pyear-1)+"'")}

----

${" and funddealdate BETWEEN '"+CONCATENATE(pyear-1,"-01-01")+"' AND '"+YEARDELTA(today(),-1+pyear-year(today()))+"'"}


最佳回答
0
烟尘Lv6高级互助
发布于2021-1-28 14:37(编辑于 2021-1-28 15:02)

year年份的前一年1月1号到year前一年的当前日期,比如当前日期是1月28号,year=2020,即2019-01-01到2019-01-28:

funddealdate BETWEEN '${CONCATENATE(year-1,"-01-01")}' 

AND '${YEARDELTA(CONCATENATE(year-1,"-",format(today(),"MM-dd")),-1)}'


下拉框如果是今年的话,就是前一年当前日期,前一年是其余年份的话,就是整年的:

funddealdate BETWEEN '${CONCATENATE(year-1,"-01-01")}' 

AND '${YEARDELTA(today(),-1)}'

AND funddealdate <= '${CONCATENATE(year-1,"-12-31")}'


  • 用户K0035705 用户K0035705(提问者) 控件名是‘${year}’这么写吗
    2021-01-28 14:52 
  • 烟尘 烟尘 回复 用户K0035705(提问者) 直接用year
    2021-01-28 14:54 
  • 用户K0035705 用户K0035705(提问者) 下拉框如果是今年的话,就是前一年当前日期,前一年是其余年份的话,就是整年的
    2021-01-28 14:54 
  • 用户K0035705 用户K0035705(提问者) 这个是不是就成了到前一年的现在了
    2021-01-28 14:55 
  • 烟尘 烟尘 回复 用户K0035705(提问者) year是今年的话,就是前一年1月1号到当前日期减1年,如果你要其余年份整年的话,就把不改第二个条件,再另加一个条件<=其余年份的12月31号
    2021-01-28 14:58 
  • 3关注人数
  • 371浏览人数
  • 最后回答于:2021-2-1 15:13
    请选择关闭问题的原因
    确定 取消
    返回顶部