MYSQL查询,条件连接,如果在两个日期之间

时间:2012-08-16 18:33:34

标签: mysql join if-statement

所以我有一个非常强烈的现有Mysql查询,如下所示:

SELECT CURRENT.*, PROGRAMS.NAME 
FROM CURRENT 
LEFT JOIN PROGRAMS ON CURRENT.PID = PROGRAMS.ID 
ORDER BY PID ASC

现在,我想使用此查询来执行其他操作,因为我已经访问了我的数据库。我有一个名为“TIMEWINDOWS”的第三个表,我将如何使用此查询返回一组tinyint(0或1),具体取决于它是否在Start_Time和End_Time之间以及我查询中已有的所有其他内容?

非常感谢你的帮助。

TimeWindows表包含以下内容:

ID               int(11) PK
PID              int(11)   <-- Can join on this from any of the other tables.
ALL_DAY          tinyint(1)
START_DATE       date
END_DATE         date
EARLIEST   time
LATEST     time
NOTICE       int(11)
LATEST  time
MAX int(11)
MIN int(11)
PROBABLE_START   time
PROBABLE_END     time

我想检查它是否在start&amp;结束日期,并返回一个bool,如果它,但我似乎无法找到一种方法这样做,任何人都可以帮助吗?

2 个答案:

答案 0 :(得分:1)

SELECT CURRENT.*, PROGRAMS.NAME, 
  CASE WHEN t.ID IS NULL THEN 0 ELSE 1 END AS BetweenStartEnd
FROM CURRENT 
  LEFT JOIN PROGRAMS ON CURRENT.PID = PROGRAMS.ID 
  LEFT JOIN TIMEWINDOWS t ON (t.PID = CURRENT.PID 
    AND DATE_FORMAT(NOW(), '%Y-%m-%d') > START_DATE 
    AND DATE_FORMAT(NOW(), '%Y-%m-%d') < END_DATE
  )
ORDER BY PID ASC

答案 1 :(得分:0)

我认为您缺少一些信息可以为您提供代码示例,但请查看此页面,它可能有所帮助:

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if