PHP、MySQL - DATE 字段中的多条记录

标签 php mysql

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

dater = CONCAT_WS(',', dater,  '$dater' )

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

例子: 19-12-2016, 20-12-2016, 21-12-2016

最佳答案

最好的办法是将更新表添加到您的架构中。

假设您的主表名为 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

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

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

教授Richard Snodgrass 写了一本关于这个主题的好书并出版了。 Developing Time-Oriented Database Applications in SQL.

关于PHP、MySQL - DATE 字段中的多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265491/

相关文章:

asp.net - 错误 : "Fill: SelectCommand.Connection property has not been initialized."

python - BigQuery 中的自动数据集?

MySQL:插入...如果计数 <= 库存则不做任何事情

java无法连接到jdbc

php - topbar 菜单的性能 - mysql 或 json

php - 使用 PHP 运行 Linux 命令

javascript - 使用源代码中的默认代码打开 CKEDITOR

mysql - 选择 * 重复项,然后选择 * 非重复项 - mysql

php - 如何同时运行多个SQL查询?

php - Laravel artisan 迁移失败