MYSQL 查询不允许时间戳列具有同一日期的两个值

标签 mysql sql timestamp

例如,如果用户将“2017-03-13 12:16:18.0”插入时间戳列中, 如果是在同一天,即 2017 年 3 月 13 日(在本例中),则不应允许同一用户在此列中输入其他值。或者最终,每次用户尝试在同一天两次插入时间戳日期时,使用之前插入的值 ('2017-03-13 12:16:18.0') 更新时间戳列。我希望我已经足够明确了。

下面是我提出的一个不起作用的查询,但它显示了我希望查询最终执行的操作。感谢您的帮助和反馈。

INSERT INTO hr.entry(id,entry_time)
VALUES (45,
    CASE WHEN '13-03-2017'= CAST(SYSDATE() AS date) THEN
     (UPDATE hr.entry
     SET entry_time =
    (SELECT entry_time
      FROM hr.entry
      WHERE id=45
      AND CAST(entry_time AS date)= CAST(SYSDATE() AS date) ) 
     ELSE 
  SYSDATE());

最佳答案

您可以向表中添加DATE 列,并向该列添加唯一索引。然后,当您将时间戳插入时间戳列时,您还可以将该时间戳中的日期插入到 DATE 列中。尝试插入其日期部分已存在于该表中的时间戳将导致 MySQL 抛出错误。

关于MYSQL 查询不允许时间戳列具有同一日期的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42763194/

相关文章:

mysql - 如何在 mac os 10.13.3 中重置 mysql 密码

mysql - 显示单行的特定 MySQL 表字段

java - 当两个不相关的表都有复合主键时,Hibernate 连接两个表

sql - 异步运行 SQL 查询

android - 如何将 "YYYY/MM/DD HH:MM"转换为 "MMM DD"和 "HH:MM"?

MYSQL排序顺序

php - mysqli 和 mysql 插入数据库命令

sql - 为什么加入需要花费大量时间来执行?

java - 如何从时间戳值获取时区 ID

php - Doctrine2 默认时间戳格式为 "0000-00-00 00:00:00"?