如何根据系统时间getdate()取数

如何根据系统时间getdate(),按小时取数,比如今天是13号取19-24点数据,但是一过凌晨,getdate()就是14号了,此时取0-7点数据,这个sql应该怎么写,目前写法多了一段13号那天的0-7点

(substring(convert(varchar(100),Receive_time,23),1,10)=substring(convert(varchar(100),getdate(),23),1,10)  ----接收日期为当前日期

and substring(convert(varchar(100),Receive_time,120),12,2) >= 19 

and substring(convert(varchar(100),Receive_time,120),12,2) <= 24)

or (substring(convert(varchar(100),Receive_time,23),1,10)=substring(convert(varchar(100),getdate(),23),1,10)  ----接收日期为当前日期

and substring(convert(varchar(100),Receive_time,120),12,2) >= 0 

and substring(convert(varchar(100),Receive_time,120),12,2) <= 7)

FineReport 冰雨咖啡 发布于 2022-12-13 14:50 (编辑于 2022-12-13 14:54)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-12-13 14:53(编辑于 2022-12-13 15:17)

这个逻辑不清楚 有问题

一过凌晨不就又是当日了么 又是19-24??

image.png

------------

SELECT * FROM TABLE WHERE 1=1 

${IF(OR(HOUR(NOW())>=19,HOUR(NOW())<=7),IF(HOUR(NOW())>=19," AND RQ>='"+FORMAT(TODAY(),"yyyy-MM-dd 19:00:00")+"' AND RQ<='"+FORMAT(DATEDELTA(TODAY(),1),"yyyy-MM-dd 07:00:00")+"'"," AND RQ>='"+FORMAT(DATEDELTA(TODAY(),-1),"yyyy-MM-dd 19:00:00")+"' AND RQ<='"+FORMAT(TODAY(),"yyyy-MM-dd 07:00:00")+"'")," AND 1<>1" )}

  • 冰雨咖啡 冰雨咖啡(提问者) 就是比如系统时间是13号19点以后,就展示13号19:00-24:00以及14号0点-7点的数据,系统时间是14号7点之前,也显示13号19:00-24:00以及14号0点-7点的数据
    2022-12-13 14:58 
  • Z4u3z1 Z4u3z1 回复 冰雨咖啡(提问者) 大概就是上面的语句 就是统一一下你Receive_time的格式也是 yyyy-MM-dd HH:mm:ss
    2022-12-13 15:18 
最佳回答
0
qiqimumaLv3见习互助
发布于2022-12-13 15:31

能把完整的sql 都贴出来吗?还有你是要在帆软里判断还是直接在sql server 里面判断?

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