${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的数据,自己写的查询不出来
${if(shift == "夜班", "AND (DATE_FORMAT(zsdate, '%H:%i:%s') >= '16:00:00' OR DATE_FORMAT(zsdate, '%H:%i:%s') < '08:00:00')", "")}
${if(shift == "夜班", "AND zsdate >= '"+FORMAT(today(),"yyyy-MM-dd 16:00:00")+"' AND zsdate < '"+FORMAT(DATEDELTA(today(),1),"yyyy-MM-dd 08:00:00")+"'", "")}
检查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')",
"")
}
你自己写的就能查出来