2012-05-22 110 views
-1
UPDATE a_timeblock SET timeblock_due_date=DATE(timeblock_next_update), 
CASE timeblock_recurrence_unit 
WHEN day THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time day) 
WHEN month THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time month) 
    END 

WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=  
FROM_UNIXTIME(1337662800) 

以上查询是错误的。我想要做类似上面的事情。如果可能的话,我该怎么做。在mysql不起作用的情况下

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL 
server version for the right syntax to use near 
'CASE timeblock_recurrence_unit WHEN 'day' THEN DATE_ADD(NOW(),IN' at line 2 
+0

你究竟想要做什么? –

+0

什么是错误,错误信息是什么等等。我们没有填充你的表格和设置的数据库,请帮助我们专注于这个问题。 –

+0

timeblock_recurrence_unit包含当月的某个时间段。我只想使用date_add()来计算更新的下一个日期。 – user1410812

回答

0

我认为你需要使用在你的价值观报价的情况下,只是SET timeblock_due_date

... 
SET timeblock_due_date = 
CASE timeblock_recurrence_unit 
    WHEN 'day' THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time day) 
    WHEN 'month' THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time month) 
END 
... 

这是假定timeblock_recurrence_unit是一个VARCHAR类型(这将需要)

+0

其enum('day'。'month'....) – user1410812

+0

罚款,那么这将工作 – Bohemian

0

可能是这样的吗?

UPDATE a_timeblock SET timeblock_due_date= 
CASE timeblock_recurrence_unit 
WHEN 'day' THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time day) 
WHEN 'month' THEN 
     DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time month) 
    END 

WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=  
FROM_UNIXTIME(1337662800) 
1

您的第二个值没有目标列。

UPDATE a_timeblock 
SET timeblock_due_date = DATE(timeblock_next_update), 
    column_name?  = CASE ... END 
WHERE ... 
+0

timeblock_next_update = DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time日) – user1410812

+0

@ user1410812:错误...是一个问题或更正我的答案或什么?我不清楚你在说什么/要问什么。 –

相关问题