MySQL: 查询普通期货的上一个交易日条件写法
-
SQL语句
o.`create_time`
BETWEEN DATE_SUB(DATE_SUB(CURDATE(),INTERVAL 3 HOUR),
INTERVAL (CASE DAYOFWEEK(CURDATE()) WHEN 1 THEN 2 WHEN 2 THEN 3 WHEN 3 THEN 3 ELSE 1 END) DAY)
AND DATE_SUB(DATE_ADD(CURDATE(),INTERVAL 20 HOUR),
INTERVAL (CASE DAYOFWEEK(CURDATE()) WHEN 1 THEN 2 WHEN 2 THEN 3 ELSE 1 END) DAY)
-
函数讲解
- DATE_SUB 为时间减
- DATE_ADD 为时间加
- CURDATE() 为当前日期第一分钟,对应Now()为当前时间第一毫秒
- DAYOFWEEK 为获取时间星期值,1~7代表周日~周六
- BETWEEN .. AND .. 为左闭右闭区间
-
效果
- 实现 周二~周五交易日的前夜盘+日盘
- 实现 周一交易日的 上周五夜盘+周一夜盘