sql >> Database >  >> RDS >> Mysql

mySQL Herhaalde Evenementen Query

Hier is iets waar ik mee heb gespeeld (en hier is het als een sqlfiddle met wat voorbeeldgegevens) ... ik weet het niet 100% zeker, maar het zou de laatste 7 dagen aan gegevens moeten verzamelen. Merk op dat ik MySQL DATETIME gebruik versus integer-tijdstempels, maar je zou dat gemakkelijk moeten kunnen converteren (voor het testen van de query was het veel gemakkelijker om string-datums te gebruiken).

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. Hoe microseconden of milliseconden uit de huidige MySQL-tijd op te halen?

  2. Hoe kan ik NULL-gegevens invoegen in de MySQL-database met Python?

  3. COVID-19-paraatheid bij ScaleGrid

  4. Sluit bepaalde waarden uit bij het splitsen van een vaste waarde naar landen op basis van een dagelijks inkomstenaandeel