0

1 つのテーブルには、次のデータ エントリがあります。

mm_id, mm_interval, mm_interval_type, mm_start_date, mm_start_hour, mm_end_hour
3,     14,          3,                2013-07-15,    08:22,         03:55

mm_interval は「すべての」 mm_interval_type と同じです

array(
1=>"Hour", 
2=>"Day", 
3=>"Week", 
4=>"Month", 
5=>"Year" 
)

今、私が探しているのは、現在の日付に一致するエントリを選択する方法です。

/ラーズ

4

1 に答える 1

0

私はこれまでの結果で質問を変更すると思います;-)

SELECT
  mm.*,
    mm_recurrence_settings.*
FROM
    mm
LEFT JOIN mm_types USING (mm_type_id)
LEFT JOIN mm_recurrence_settings USING (mm_id)
WHERE
    SELECT
        CASE
            WHEN mm_recurrence_settings.mm_reoc_interval_type = 1 THEN DATE(NOW()) BETWEEN DATE(DATE_ADD(mm_recurrence_settings.mm_reoc_start_date, INTERVAL mm_recurrence_settings.mm_reoc_interval HOUR)) AND CURDATE( )
            WHEN mm_recurrence_settings.mm_reoc_interval_type = 2 THEN DATE(NOW()) BETWEEN DATE(DATE_ADD(mm_recurrence_settings.mm_reoc_start_date, INTERVAL mm_recurrence_settings.mm_reoc_interval DAY)) AND CURDATE( )
            WHEN mm_recurrence_settings.mm_reoc_interval_type = 3 THEN DATE(NOW()) BETWEEN DATE(DATE_ADD(mm_recurrence_settings.mm_reoc_start_date, INTERVAL mm_recurrence_settings.mm_reoc_interval WEEK)) AND CURDATE( )
            WHEN mm_recurrence_settings.mm_reoc_interval_type = 4 THEN DATE(NOW()) BETWEEN DATE(DATE_ADD(mm_recurrence_settings.mm_reoc_start_date, INTERVAL mm_recurrence_settings.mm_reoc_interval MONTH)) AND CURDATE( )
            WHEN mm_recurrence_settings.mm_reoc_interval_type = 5 THEN DATE(NOW()) BETWEEN DATE(DATE_ADD(mm_recurrence_settings.mm_reoc_start_date, INTERVAL mm_recurrence_settings.mm_reoc_interval YEAR)) AND CURDATE( )
        END as newDate

これはそれが得られる場所です....

私の考えは、BETWEENを使用して間隔を反復することでした。しかし、悲しいかな、私は最初の反復しか取得しません。

おそらくストアドプロシージャですか?

于 2013-07-16T05:39:23.547 に答える