【问题标题】:Insert Date and Time only if > = Current Date仅当 > = 当前日期时插入日期和时间
【发布时间】:2016-04-04 13:24:37
【问题描述】:

我有一个字段appointment_dateappointment_time,数据类型分别是datetime。表名是appointment。我们的老师想要的是只有当它大于或等于current_datecurrent_time 时才能添加约会。我对getdate()sysdate()dateadd() 或任何 DATE 函数的工作方式感到非常困惑。希望你能帮助我。谢谢。

【问题讨论】:

  • 您可能需要为 tis 编写触发器。你了解过这些吗?
  • 是的,我们已经谈到了触发器。我主要对 MySQL 中的语法感到困惑。不过还是谢谢。

标签: mysql sql date getdate sql-date-functions


【解决方案1】:

如果您对时间/日期函数感到迷茫,网上有很多关于 MySQL 的文档,请在此处查看:Date and time functions

鉴于 MySQL 没有条件 INSERT 语句这一事实,我建议在执行不带条件检查的简单插入之前对要插入的值进行各种检查。

【讨论】:

  • 语法 :varName 是 JCBD 模板的语法,它代表您要分配的值。这应该适应您在 SQL 查询中实际插入值的方式。
  • 感谢您的建议。如果您不介意,如何将这些插入 MySQL 中?
  • mysql中的on子句只能有on duplicate key update,你不能在那里做这样的检查。
  • 是的,你完全正确。这完全使我的建议无效。返回调查!
  • 嗯,从我在日常工作中看到的情况来看,我们在插入之前会进行这种检查。我猜,原因是 MySQL 并没有真正的条件 INSERT。
【解决方案2】:

在 sql 中,您可以使用 check constraint 强制执行此类逻辑,不幸的是,mysql 尚未实现此类约束。这意味着,您要么必须在调用插入语句之前检查应用程序本身的条件,要么必须创建 a stored procedure 才能达到预期的结果。

在这两种解决方案中,逻辑都很简单:使用 if 条件语句检查要插入的值是否大于当前日期或时间(实际上与它进行比较非常重要)。

第三种解决方案是创建一个插入前触发器并使用signal 从中引发一条sql 错误消息,以防止插入记录。

【讨论】:

  • 好的。我会尝试你的建议。谢谢 :) 我对这件事有点陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多