是否可以在SQLite中进行try / catch类型更新?

时间:2011-04-04 21:22:25

标签: sql sqlite datetime

UPDATE Table SET Value = 5 WHERE DateTime = '03:42:34';

但有时DateTime将不存在。我想知道是否有任何方法可以让它动态尝试

UPDATE Table SET Value = 5 WHERE DateTime = '03:42:35';

这可能是不可能的,特别是因为'DateTime`是一个字符串,但是想知道是否有某种方法可以做到这一点。

我曾考虑过使用DateTime的前7个字符进行匹配,但这可能不够精确。

3 个答案:

答案 0 :(得分:1)

CASE表达式听起来像是可以做你想要的。

  

CASE表达式起作用   与其他的IF-THEN-ELSE相似   编程语言。

     

发生在的可选表达式   在CASE关键字和第一个关键字之间   WHEN关键字称为“基础”   表达。有两种基本形式   CASE表达式:带有   基本表达式和那些没有。

     

在没有基本表达的CASE中,   评估每个WHEN表达式   结果被视为布尔值,   从最左边开始   继续向右。的结果   CASE表达式是评估   那个表达的那个   对应第一个WHEN   表达式,其值为true。要么,   如果没有WHEN表达式   评估为真,结果为   评估ELSE表达式,如果   任何。如果没有ELSE表达式   没有WHEN表达式   如果为true,那么整体结果为NULL。

http://www.sqlite.org/lang_expr.html

答案 1 :(得分:0)

这是你想要的吗?

UPDATE Table
SET Value = 5 
WHERE DateTime =
       ( SELECT MIN(DateTime)
         FROM Table
         WHERE DateTime >= '03:42:34'
       )
;

答案 2 :(得分:0)

我让这项工作以一种直截了当的方式让我感到愚蠢,因为我没想到最初:

UPDATE Table SET Value = 5 WHERE DateTime BETWEEN datetime('2020-03-21 03:42:35', '-1 second') and datetime('2020-03-21 03:42:35', '+1 second')