【问题标题】:SQL-Update under a external condition外部条件下的 SQL-Update
【发布时间】:2021-12-19 11:40:45
【问题描述】:

是否可以使用与其正在处理的表完全无关的条件来限制 SQL CRUD 语句的执行?

例如仅在有特殊日期时才执行 UPDATE。

UPDATE tabfoo SET name="santa" where id="123"   // only if day = 31.12.

我喜欢在单个语句中包含此内容。我知道如何在脚本中做到这一点。 Me 平台将是 MySql 或 SqlLite。

【问题讨论】:

  • 您的意思是仅在今天是 31.12 时才更新,还是在列值为 31.12 时才更新?
  • current_date 预计会返回日期。

标签: mysql sql sqlite sql-update date-formatting


【解决方案1】:

对于 SQLite,您可以使用函数 strftime()

WHERE id = '123'
  AND strftime('%d.%m', CURRENT_DATE) = '31.12'

对于 MySql,函数 DATE_FORMAT():

WHERE id = '123'
  AND DATE_FORMAT(CURRENT_DATE, '%d.%m') = '31.12'

【讨论】:

    【解决方案2】:

    在 MySQL 中,问题可以通过以下方式解决:

    UPDATE tabfoo 
    SET name="santa" WHERE
        id="123" AND  MONTH(CURDATE()) = 12 AND DAY(CURDATE()) = 31;  // only if day = 31.12.
    

    UPDATE tabfoo 
        SET name="santa" WHERE
            id="123" AND DATE_FORMAT(CURDATE(), '%d.%m') = '31.12';
    

    对于 SQLite,您可以找到替代功能

    【讨论】:

      【解决方案3】:

      你可以试试

      UPDATE tabfoo SET name="santa" where id="123" and day = 31.12.

      否则,您可以尝试使用 sql 存储过程。 if-else doku

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2021-11-16
      • 2014-10-30
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多