数据集怎样查询当天为16:00:00-次日08:00:00的数据

${if(shift == "夜班", "AND zsdate >= STR_TO_DATE(CONCAT(CURDATE(), ' 16:00:00'), '%Y-%m-%d %H:%i:%s') AND zsdate < STR_TO_DATE(CONCAT(CURDATE() + INTERVAL 1 DAY, ' 08:00:00'), '%Y-%m-%d %H:%i:%s')", "")}数据集怎样查询当天为16:00:00-次日08:00:00的数据,自己写的查询不出来

FineReport nesy 发布于 2025-6-10 14:48 (编辑于 2025-6-10 14:51)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
nesyLv3见习互助
发布于2025-6-11 14:10

${if(shift == "夜班", "AND (DATE_FORMAT(zsdate, '%H:%i:%s') >= '16:00:00' OR DATE_FORMAT(zsdate, '%H:%i:%s') < '08:00:00')", "")}

最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-6-10 14:52(编辑于 2025-6-10 15:02)

${if(shift == "夜班", "AND zsdate >= '"+FORMAT(today(),"yyyy-MM-dd 16:00:00")+"' AND zsdate < '"+FORMAT(DATEDELTA(today(),1),"yyyy-MM-dd 08:00:00")+"'", "")}

最佳回答
0
ScyalcireLv7高级互助
发布于2025-6-10 15:06

检查zsdate字段是否为标准的日期时间类型。若为字符串类型,需确保格式与STR_TO_DATE中的格式'%Y-%m-%d %H:%i:%s'完全匹配

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

MYSQL写法

SELECT * FROM your_table

WHERE 1=1

${if(shift == "夜班", 

    "AND zsdate >= STR_TO_DATE(CONCAT(CURDATE(), ' 16:00:00'), '%Y-%m-%d %H:%i:%s') 

     AND zsdate < STR_TO_DATE(CONCAT(CURDATE() + INTERVAL 1 DAY, ' 08:00:00'), '%Y-%m-%d %H:%i:%s')", 

    "")

}

最佳回答
0
阿德放Lv5见习互助
发布于2025-6-11 09:17

你自己写的就能查出来

image.png

  • nesy nesy(提问者) 我这边的数据集不能识别 + INTERVAL 1 DAY,今天换了一种写法成功了
    2025-06-11 10:09 
  • 3关注人数
  • 87浏览人数
  • 最后回答于:2025-6-11 14:10
    请选择关闭问题的原因
    确定 取消
    返回顶部