2012-05-22 3 views
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의 값을합니다. MySQL의 문서에 따르면

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) 
+1

는 내가 [이]로 존경하는 신사를 참조 여러 줄 – Sebas

+2

에 맞는 쿼리 (http://stackoverflow.com/questions/6749892/sql-use-column-value-를 포맷하십시오 참조 검색어 문자열로 키워드로 사용). 불행히도, 그것은 불가능합니다. 죄송합니다. – DaveRandom

답변

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) 

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

DATE_ADD 기능 날짜 연산을 수행하는 기간과 부의 inverval를 받아 들인다. 원하는 단위를 제공해야합니다. 원하는 단위만큼의 단위를 제공하지 않아야합니다.

기능 요구 사항을 수정하고 DATE_ADD 메소드가 원하는 작업을 수행하는지 다시 생각해야합니다.

rgds.

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); 
+0

단위가 월인 경우 어떻게됩니까? DAY – user1410812

+0

@user1410812 아니요, 위의 DaveRandom의 설명을 참조하십시오. 간단히 작동하지 않습니다. 단위에 변수를 사용할 수 없으며 상수 여야합니다. – bfavaretto

+0

사례를 사용하여 얻었습니다. – user1410812

관련 문제