0
UPDATE ost_timeblock 
SET 
  timeblock_due_date=DATE(timeblock_next_update),
  timeblock_next_update=DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time **timeblock_recurrence_unit** )
WHERE timeblock_recurrence=1 
  AND timeblock_complete=0 
  AND timeblock_next_update=FROM_UNIXTIME(1337662800)

正常に動作するため、手動の日または月を使用する場合timeblock_recurrence_unit

timeblock_recurrence_unit = enum(day,month,year)timeblock_recurrence_unit上の太字の場所の値が必要です

ケースでそれを行う方法はありますか?

If timeblock_recurrence_unit = 'day' then 
timeblock_next_update=DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time day )

If timeblock_recurrence_unit = 'month' then  
timeblock_next_update=DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time month)
4

2 に答える 2

0

次のようにユーザー定義変数を使用できます。http://dev.mysql.com/doc/refman/5.0/en/user-variables.htmlを参照してください。

SET @timeblock_recurrence_unit = 'DAY';
UPDATE ost_timeblock SET
 timeblock_due_date=DATE(timeblock_next_update),
 timeblock_next_update=DATE_ADD(
       NOW(),
       INTERVAL timeblock_recurrence_time @timeblock_recurrence_unit
 ) WHERE 
    timeblock_recurrence=1 AND 
    timeblock_complete=0 AND
    timeblock_next_update= FROM_UNIXTIME(1337662800);
于 2012-05-22T19:34:09.350 に答える
0
UPDATE ost_timeblock SET 
    timeblock_due_date = DATE(timeblock_next_update),
    timeblock_next_update = DATE_ADD(NOW(), INTERVAL timeblock_recurrence_time      
**timeblock_recurrence_unit** )
WHERE 
    timeblock_recurrence=1 
AND timeblock_complete=0 
AND timeblock_next_update = FROM_UNIXTIME(1337662800)

mysql doc によると: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

date_add 機能は、日付計算を実行するために、日付と単位の間隔を受け入れます。あなたがしたいユニットのENUMではなく、特定のユニットを提供する必要があります。

機能要件を修正し、DATE_ADD メソッドが必要なアクションを実行しているかどうかを再考する必要があります。

rgds。

于 2012-05-22T19:28:34.253 に答える