PHP,MySQL - DATE字段中的多个记录

时间:2016-12-21 14:46:17

标签: php mysql

我只是想知道在日期字段中是否可以有多个记录?对于VARCHAR,我知道这有效:

util.inspect

但是我想知道DATE字段是否可以实现相同的效果?原因是每次记录更新时都会保存日期。非常感谢任何帮助。

实施例: 19-12-2016,20-12-2016,21-12-2016

1 个答案:

答案 0 :(得分:1)

最好的办法是在架构中添加更新表。

假设您的主表名为info,并且包含这些列。

   info_id  INT  (autoincrementing)
   info_val VARCHAR(250)
   info_last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

然后,添加一个名为info_updates的表。它有以下列:

   info_update_id INT (autoincrementing)
   info_id        INT (points to info table row)
   info_update    TIMESTAMP DEFAULT CURRENT_TIMESTAMP
   info_why       VARCHAR(250)  (text describing update, if you like)

然后,每次在info中插入或更新行时,您还会在info_updates中插入一行。

然后,您将能够获得更新历史记录,首先使用最新的更新,如下所示:

   SELECT info.info_id, info.info_val,
          GROUP_CONCAT(info_updates.info_update ORDER BY info_updates.info_update) updates
     FROM info
     JOIN info_updates ON info.info_id = info_updates.info_id
    GROUP BY info.info_id, info.info_val
    ORDER BY MAX(info_updates.info_update) DESC

如果您将更新时间戳存储到以逗号分隔的文本字段中,那么这些不错的检索内容都无法正常工作。

这似乎是额外的工作。但是,从长远来看,逗号分隔的文本字段会导致更多的额外工作。

教授。理查德斯诺德格拉斯已经写了一本关于这个主题的精美书籍并将其提供Developing Time-Oriented Database Applications in SQL.