Mysql
 sql >> база данни >  >> RDS >> Mysql

mySQL Заявка за повтарящи се събития

Ето нещо, с което си играя (и ето го като sqlfiddle с някои примерни данни)... не съм 100% сигурен за това, но трябва да вземе данните за последните 7 дни. Имайте предвид, че използвам MySQL DATETIME спрямо целочислени времеви марки, но би трябвало да можете да конвертирате това лесно (за тестване на заявката беше много по-лесно да използвате низови дати).

SELECT *
  FROM
    (SELECT 
      *, 
      CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', DAY(start)) AS monthly,
      CONCAT(YEAR(NOW()), '-', MONTH(start), '-', DAY(start)) AS yearly
      FROM events
    ) tmp
  WHERE
    (
      (recurring = 'none')
      OR (recurring = 'daily')
      OR (recurring = 'weekly')
      OR (
        recurring = 'monthly'
        AND (
          (
            monthly >= NOW()
            AND monthly <= DATE_ADD(NOW(), INTERVAL 7 DAY)
          )
          OR (
            DATE_ADD(monthly, INTERVAL 1 MONTH) >= NOW()
            AND DATE_ADD(monthly, INTERVAL 1 MONTH) <= DATE_ADD(NOW(), INTERVAL 7 DAY)
          )
        )
      )
      OR (
        recurring = 'yearly'
        AND (
          (
            yearly >= NOW()
            AND yearly <= DATE_ADD(NOW(), INTERVAL 7 DAY)
          )
          OR (
            DATE_ADD(yearly, INTERVAL 1 YEAR) >= NOW()
            AND DATE_ADD(yearly, INTERVAL 1 YEAR) <= DATE_ADD(NOW(), INTERVAL 7 DAY)
          )
        )
      )
    )
    AND start <= NOW()
    AND (
      end IS NULL 
      OR end >= DATE_ADD(NOW(), INTERVAL 7 DAY)
    )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membership.Provider за mysql в проблем с asp.net

  2. Как да добавя условия в подподподчинените дъщерни модели в sequelize, които трябва да повлияят на моя родителски модел в findAndCountAll?

  3. Защо две едновременни оператори за изтриване + вмъкване се блокират на празна таблица?

  4. MySQL съкращаване на резултата при използване на Group_Concat и Concat

  5. MySql заявка Заменете NULL с празен низ в Select