怎么用sql取某个日期的前四条数据和后三条数据,指定日期前后总的取八条数据?

1671434701370.pngDATE_DESC这个字段是某个日期范围,比如指定日期是2022-12-19对应的就是20221215-20221221这条记录,现在要取这条记录的前四条记录和后三条记录以及自身对应的那条记录,即取红色大框中的八条记录要怎么取,数据库是mysql数据库,用sql要怎么写?

FineReport SQL 用户d9908268 发布于 2022-12-19 15:50 (编辑于 2022-12-19 15:57)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
lxy2Lv6中级互助
发布于2022-12-19 16:40(编辑于 2022-12-19 16:42)

set @a ='20221215-20221221';

set @i=0;

set @j=0;

set @b=0;

select no into @b from(

SELECT *,(@i:=@i+1) as no  FROM (

SELECT '20221110-20221116' AS A

UNION ALL

SELECT '20221117-20221123' AS A

UNION ALL

SELECT '20221124-20221130' AS A

UNION ALL

SELECT '20221201-20221207' AS A

UNION ALL

SELECT '20221208-20221214' AS A

UNION ALL

SELECT '20221215-20221221' AS A

UNION ALL

SELECT '20221222-20221228' AS A

UNION ALL

SELECT '20221229-20230104' AS A

UNION ALL

SELECT '20230105-20230111' AS A

UNION ALL

SELECT '20230112-20230118' AS A

 )c

)b  where b.a='20221215-20221221';

-- SELECT @A=XH FROM #B WHERE A=@B

 select * from(

SELECT *,(@j:=@j+1) as no  FROM (

SELECT '20221110-20221116' AS A

UNION ALL

SELECT '20221117-20221123' AS A

UNION ALL

SELECT '20221124-20221130' AS A

UNION ALL

SELECT '20221201-20221207' AS A

UNION ALL

SELECT '20221208-20221214' AS A

UNION ALL

SELECT '20221215-20221221' AS A

UNION ALL

SELECT '20221222-20221228' AS A

UNION ALL

SELECT '20221229-20230104' AS A

UNION ALL

SELECT '20230105-20230111' AS A

UNION ALL

SELECT '20230112-20230118' AS A

)A )c  WHERE no BETWEEN @b-4 AND @b+3

参考

最佳回答
0
weibwLv7高级互助
发布于2022-12-19 15:54(编辑于 2022-12-19 16:02)

什么数据库啊

——————————————

DATE_ADD(now(),INTERVAL -4 day)   这个是获取前四天的时间点

DATE_ADD(now(),INTERVAL +3 day) 这个是获取后三天的时间点

你把now()替换成你的制定时间,然后between  and 一下这两个时间节点就可以了

  • 2关注人数
  • 292浏览人数
  • 最后回答于:2022-12-19 16:42
    请选择关闭问题的原因
    确定 取消
    返回顶部