如何選擇帶有當天時間戳的行
在資料庫管理系統中,通常會儲存資料記錄的時間戳以追蹤它們的記錄時間建立或修改。但是,當您需要從帶有時間戳記的表中檢索資料時,您可能會遇到根據特定日期選擇記錄的挑戰。
問題陳述
您有一個資料庫帶有時間戳列的表,並且您只想檢索當天建立的記錄。您最初使用下面的查詢,但注意到它返回過去24 小時的記錄,而不僅僅是今天的日期:
SELECT * FROM `table` WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 1 DAY));
解決方案
要選擇具有忽略時間而取得當天的時間戳,可以使用以下查詢:
SELECT * FROM `table` WHERE DATE(`timestamp`) = CURDATE()
警告:
雖然此查詢達到了您的預期結果,但它可能不會達到您的預期結果發揮最佳性能。在時間戳列上使用 DATE() 會阻止 MySQL 有效地使用該列上的任何索引。
為了更有效的解決方案,您可以建立一個專用的日期列並將時間戳記的日期部分儲存在該列中。這允許 MySQL 在日期列上使用索引來加快查詢速度。
以下是如何建立專用日期列並更新其值的範例:
ALTER TABLE `table` ADD COLUMN `date` DATE NOT NULL; UPDATE `table` SET `date` = DATE(`timestamp`);
以上是如何在MySQL中檢索帶有今天時間戳記的記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!