【发布时间】:2015-02-04 14:33:00
【问题描述】:
我正在尝试编写一个查询,如果另一列满足某些条件,它将更改表中所需的数据。它将需要将“Last_logon”列与 SYSDATE 进行比较,如果 Last_logon 日期早于(SYSDATE - 45 天),我希望它将表中名为“STATUS”的列从“Active”更改为“Inactive” .
以下是我到目前为止所写的内容,但一个问题是“Last_logon”列的数据类型为 varchar2,格式为 Month,DD YYYY HH:MM。任何建议都会很棒我尝试将 varchar2“转换”为日期数据类型,但这只会导致大量错误消息。
ALTER TABLE technician_tbl
ALTER COLUMN 'STATUS'
WHERE 'Last_logon' > (SYSDATE -45);
【问题讨论】:
-
向我们展示您尝试将其转换为什么以及错误消息的样子
-
该查询在 Oracle 中毫无意义。
-
提示:ALTER TABLE 语句修改表的架构,即添加列、删除列、重命名列等。这不是您想要的。您想更改表中的数据。这就是 UPDATE(或者可能是 MERGE)语句的用途。
-
谢谢,我会稍微阅读一下,然后再试一次。我会发布我得到的任何结果。我对此很陌生。
-
将“last_logon”更改为 DATE 数据类型 .. 永远不要将日期存储为字符串 .. 以后只会对您造成伤害 ... 保证。