gpt4 book ai didi

php - 从 cron 作业调用时,MySQL 查询不返回日期范围内的所有记录

转载 作者:行者123 更新时间:2023-11-30 22:55:28 24 4
gpt4 key购买 nike

这是我的问题。

我有一个 MySQL 表,其中包含从 php 脚本处理的订单表单的详细信息。捕获的详细信息包括订购的产品、商店位置等...我可以看到所有必需的详细信息都已毫无问题地保存到数据库中。

现在我有一个每天两次从 cron 作业调用的脚本。此脚本在数据库中查询特定日期范围内的订单,然后将输出保存到文本文件中,然后用户下载该文件并使用第三方软件进行处理。

我的问题是这个由 cron 作业调用的脚本缺少一些命令,但这种情况并非总是发生。

如果我在 phpmyadmin 中运行由 cron 作业手动调用的完全相同的查询,订单将出现在输出中。

有什么我应该注意的,以确保捕获所有订单。

在此先感谢您的帮助。


查询 1 - 此 cron 每天中午 12:05 运行

SELECT o.orderID, o.orderTotal, oi.code, oi.orderQty, p.prodName, p.prodCode, s.store_name, s.store_address
FROM orders o
INNER JOIN items oi ON o.orderID = oi.orderID
INNER JOIN products p ON oi.productID = p.prod_id
INNER JOIN store s ON o.orderStoreID = s.store_id
WHERE o.orderDateTime BETWEEN CAST('$overnightStart' AS DATETIME) AND CAST('$overnightEnd' AS DATETIME)

查询 2:cron 每天晚上 9:05 运行

SELECT o.orderID, o.orderTotal, oi.code, oi.orderQty, p.prodName, p.prodCode, s.store_name, s.store_address
FROM orders o
INNER JOIN items oi ON o.orderID = oi.orderID
INNER JOIN products p ON oi.productID = p.prod_id
INNER JOIN store s ON o.orderStoreID = s.store_id
WHERE o.orderDateTime BETWEEN CAST('$todayStart' AS DATETIME) AND CAST('$todayEnd' AS DATETIME)

这是我用来生成日期的代码。

date_default_timezone_set('Australia/Victoria');
$overnightStart = date("Y-m-d H:i:s", strtotime("yesterday 21:00:00"));
$overnightEnd = date("Y-m-d H:i:s", strtotime("today 11:59:59"));
$todayStart = date("Y-m-d H:i:s", strtotime("today 12:00:00"));
$todayEnd = date("Y-m-d H:i:s", strtotime("today 20:59:59"));

最佳答案

我认为您可能对 PHP 时区有疑问。如果 cron job 不使用相同的时区,一些订单可以写在 cron job 之后,但对于 dates 之前。而当你尝试超过 1 小时后(或更长时间,delta 时区),就可以了

关于php - 从 cron 作业调用时,MySQL 查询不返回日期范围内的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com