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. PHP7がMySQLiを見つけることができません

    2. MySQLCREATEFUNCTION構文

    3. PhalconPHPでRAWSQLクエリを実行する方法

    4. SELECTでさえエラーを返すようにMySQL行を意図的にロックするにはどうすればよいですか?