【发布时间】:2020-09-18 20:34:47
【问题描述】:
我有一个 MYSQL 表 posts,其中包含一个 VARCHAR(25) 列 created,其中填充了格式为 XXXX-XX XX:XX:XX 的日期时间。我正在尝试按日期搜索 > 现在 - 24 小时。
//get the timestamp for now - 24 hours
$timeAgo=date("Y-m-d H:i:s", strtotime('-24 hours'));
//outputs something like 2020-09-17 12:32:44
//search for all posts that meet the criteria
$sql = "SELECT posts.*
FROM posts
WHERE posts.uuid='uuid1'
OR posts.uuid='uuid2'
OR posts.uuid='uuid3'
AND posts.created > '$timeAgo'
ORDER BY posts.id DESC
";
仅使用一个 posts.uuid 进行搜索时,我得到了所需的结果,其中列出了该 uuid 在过去 24 小时(或其他指定时间)内的所有帖子。
当我使用上面代码块中引用的多个 uuid 进行搜索时,我得到了不想要的结果,其中列出了来自各个 uuid 的所有帖子,无论它们是何时创建的。
如何搜索过去 24 小时(或其他指定时间)内有多个 posts.uuids 的所有帖子?
【问题讨论】:
-
为什么将日期时间存储为 varchar 是我不明白的。为什么不使用
DATETIME作为类型?这将使查询变得更加容易。 -
感谢您的反馈。感谢您的提示。
标签: php mysql sql datetime where-clause