1
我只是想知道是否有可能在日期字段中有多個記錄?對於VARCHAR我知道這個工程:PHP,MySQL - 日期字段中的多個記錄
dater = CONCAT_WS(',', dater, '$dater')
不過,我只是想知道如果同樣可以用DATE字段來實現?原因是每次記錄更新時都會保存日期。任何幫助是極大的讚賞。
例子: 19-12-2016,20-12-2016,21-12-2016
我只是想知道是否有可能在日期字段中有多個記錄?對於VARCHAR我知道這個工程:PHP,MySQL - 日期字段中的多個記錄
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
如果您藏匿更新時間戳到一個逗號分隔文本字段,沒有這好的檢索內容將正常工作。
這可能看起來像額外的工作。但是,從長遠來看,逗號分隔的文本字段會導致更多的額外工作。
理查德斯諾德格拉斯教授寫了一本關於這個主題的優秀書,並提供了它。 Developing Time-Oriented Database Applications in SQL.
沒有。日期是一個日期。 –
我不認爲它是可能的,爲什麼你需要使用DATE字段而不是Varchar ?. –
不可能日期有它的具體格式 – Beginner