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)
  • 函数讲解

    1. DATE_SUB 为时间减
    2. DATE_ADD 为时间加
    3. CURDATE() 为当前日期第一分钟,对应Now()为当前时间第一毫秒
    4. DAYOFWEEK 为获取时间星期值,1~7代表周日~周六
    5. BETWEEN .. AND .. 为左闭右闭区间
  • 效果

    1. 实现 周二~周五交易日的前夜盘+日盘
    2. 实现 周一交易日的 上周五夜盘+周一夜盘