1

这有效:

UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE
  WHEN a.date_completed = '04-JUL-2012' THEN '06-JUL-2012'
    END
    WHERE a.emplid = 18

但这不会(下)。我得到的错误是数据类型不匹配,这当然是有道理的,因为一个是 DATE 数据类型,另一个是 NUMBER。

UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE a.date_completed 
  WHEN  '04-JUL-2012' THEN '06-JUL-2012'
    END
    WHERE a.emplid = 21

我的问题:是否有一种解决方法可以使我的第二种方式工作,我将列名“a.date_completed”放在 SQL 的 CASE 行中,而不是我如何让它工作第一种方式?我是否完全不使用第二个 SQL 的语法?

4

2 回答 2

2

您可以改用日期文字:

UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
  CASE a.date_completed 
    WHEN  DATE '2012-07-04' THEN DATE '2012-07-06'
  END
WHERE a.emplid = 21
于 2012-07-12T06:26:55.353 回答
1

date_completed在 case 语句中转换为字符串。

尝试这个:

UPDATE KEYBOARD_LEARNING a
   SET a.date_completed =
         CASE TO_CHAR(a.date_completed, 'DD-MON-RRRR')
          WHEN  '04-JUL-2012' THEN TO_DATE('06-JUL-2012','DD-MON-RRRR')
         END
 WHERE a.emplid = 21
于 2012-07-06T22:19:34.100 回答