Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.50 KB | None | 0 0
  1. SET @inputStartDate = "2024-01-02 12:00:00";
  2. SET @inputEndDate = "2024-01-02 13:30:00";
  3.  
  4.  
  5. SET @inputRoomId = 11;
  6.  
  7. SELECT NOT EXISTS ( SELECT r.name  FROM room r
  8. LEFT JOIN calendarEvent c ON r.id = c.roomId
  9. LEFT JOIN calendarEventPeriod p ON c.id = p.calendarEventId
  10.  
  11. WHERE ((
  12. /* inputs between event dates */
  13. ((@inputStartDate  BETWEEN c.startDate AND c.endDate) AND (@inputEndDate  BETWEEN c.startDate AND c.endDate) AND (r.id = @inputRoomId))
  14.  
  15. AND (SELECT DATE_FORMAT(@inputStartDate, "%H:%i")  BETWEEN (SELECT DATE_FORMAT(c.startDate, "%H:%i")) AND (SELECT DATE_FORMAT(c.endDate, "%H:%i")))
  16.  
  17. AND (SELECT DATE_FORMAT(@inputEndDate, "%H:%i"))  BETWEEN (SELECT DATE_FORMAT(c.startDate, "%H:%i")) AND (SELECT DATE_FORMAT(c.endDate, "%H:%i")))
  18.  
  19. /*  event dates between inputs */
  20. AND ((SELECT DATE_FORMAT(c.startDate, "%H:%i")  BETWEEN (SELECT DATE_FORMAT(@inputStartDate, "%H:%i")) AND (SELECT DATE_FORMAT(@inputEndDate, "%H:%i")))
  21.  
  22. AND (SELECT DATE_FORMAT(c.endDate, "%H:%i"))  BETWEEN (SELECT DATE_FORMAT(@inputStartDate, "%H:%i")) AND (SELECT DATE_FORMAT(@inputEndDate, "%H:%i"))
  23.  
  24. AND ((c.startDate  BETWEEN @inputStartDate AND @inputEndDate) OR (c.endDate BETWEEN @inputStartDate AND @inputEndDate)))
  25.  
  26.  
  27. AND(
  28.     ((c.period = 5) AND (p.day = (DAY(@inputStartDate))) AND (p.month = (MONTH(@inputStartDate))))
  29.      OR((c.period = 4) AND (p.day = (DAY(@inputStartDate))))
  30.      OR ((c.period = 3) AND (p.dayOfWeek = (DAYOFWEEK(@inputStartDate))))
  31.      OR (c.period = 2)
  32.      OR (c.period = 1)
  33.      ))) AS isRoomAvailable
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement