【发布时间】:2021-07-06 22:14:01
【问题描述】:
我在 MySQL(MariaDB) 中有一个名为 reports 的表。有一个(共 5 个)名为 logdate 的列,其类型为 datetime .columns 存储日期和时间 (24 小时格式) 。
例如,这里是该列的样本值
2021-04-10 09:35:00
我必须找到给定日期和时间之间的所有报告。
我从 PHP 中的表单数据中得到 4 个变量
$fromdate= $_POST['fromdate'];
$todate= $_POST['todate'];
$fromtime= $_POST['fromtime'];
$totime= $_POST['totime'];
$fromtime 和 $totime 只是整数,其值从 0 到 23 小时。
例如,条件可能是获取 2021 年 4 月 4 日之间的所有数据
从 5 点到 2021 年 4 月 8 日 18 点
即从 2021-04-04 03:00:00 到 2021-04-08 18:00:00。永远不会有分钟和秒的条件。
我的问题是如何在 PHP 中构造一个与 MySQL 类型兼容的日期时间,以便我可以拥有良好的(高效,表中有数百万条记录)搜索速度? 例如
$select = "select * from reports where logdate between ? and ? ";
P.S:我尝试将日期和时间保存为整数作为 unixtime stamp。但是,当我使用strttotime() 转换收到的日期和日期时,由于我的代码中的错误,我面临时间格式问题,因此只能使用日期时间。
如果您有任何提高数据库效率的建议,请提出建议。谢谢
【问题讨论】:
-
回显 $fromdate 和 $fromtime 以便我们查看
-
如果 frp,date amd tpdate 只保留时间部分,您如何获取日期部分进行比较?
-
这是我回显 $fromdate 和 $todate 后得到的结果。 "2021-04-09" "2021-04-12"