MS Access(OLEDB)UPDATE表在多个条件下

时间:2016-02-05 14:29:01

标签: ms-access sql-update

对于某些人来说这个问题看似简单,你好并且道歉,但我最好是一个平庸的程序员,我在这里处理关键数据。

我正在尝试更新表(Image)中的一列(PArchiveStatus),具体取决于每行中是否有某些状态(ParchiveStatus) is ((100 OR 200) AND ((timestamp>'2014-11-14 00:00:00') AND (timestamp<'2016-02-05 00:00:00')))。 (&#39;捕获&#39;是时间戳列的名称)

无法触及这两个日期之前和之后的任何内容

我提出了两种变体,两者都不起作用(笑)

向正确的方向微微推动将受到高度赞赏。

  1. 变异
    UPDATE [Image] SET [PArchiveStatus]='0' WHERE [PArchiveStatus] = 100 AND [Captured] BETWEEN '2014-11-14 00:00:00' AND '2016-02-05 00:00:00';

  2. 变异
    UPDATE [Image] SET [PArchiveStatus]='0' WHERE [PArchiveStatus]=100 AND [Captured]>'2014-11-14 00:00:00';

  3.   朋友也告诉了我这件事   3.变化   UPDATE (SELECT * from Image where PArchiveStatus = 100) SET PArchiveStatus=0 Where Captured BETWEEN '2014-11-14 00:00:00' AND '2016-02-05 00:00:00'

    我应该提一下,表中的日期/时间戳不能用于任何其他&#34;格式&#34;而不是查询中的那个,这意味着它必须格式化为YYYY-MM-DD HH:mm:ss(24小时格式)并且我老实说不确定我是否可以在单行查询中使用此格式(通过方式是解决方案的另一个要求,因为我只能将单行更新发送到数据库中)

    感谢你帮助我解决这个问题。

    解决方案

    UPDATE [Image] SET [PArchiveStatus] = 0 WHERE [PArchiveStatus] = 100 AND [Captured] BETWEEN #2014-11-14# AND #2015-12-31#
    

1 个答案:

答案 0 :(得分:0)

不知道为什么要尝试使用字符串进行更新。并将“日期”更改为表中的真实日期值。然后:

UPDATE 
    [Image] 
SET 
    [PArchiveStatus] = 0 
WHERE 
    [PArchiveStatus] = 100 
    AND 
    [Captured] > #2014-11-14 00:00:00#;