如何选择带有当天时间戳的行
在数据库管理系统中,通常会存储数据记录的时间戳以跟踪它们的记录时间创建或修改。但是,当您需要从带有时间戳的表中检索数据时,您可能会遇到根据特定日期选择记录的挑战。
问题陈述
您有一个数据库带有时间戳列的表,并且您只想检索当天创建的记录。您最初使用下面的查询,但注意到它返回过去 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中文网其他相关文章!