Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL日期/时间计算_Php_Mysql_Datetime - Fatal编程技术网

Php MySQL日期/时间计算

Php MySQL日期/时间计算,php,mysql,datetime,Php,Mysql,Datetime,我的mysql表中有一个date和time列,分别名为start\u date和start\u time。我希望我的用户能够在开始时间前X小时,至少1小时,最多24小时,为自己设置提醒 我将运行CRON脚本来发送这些提醒。现在我有: SELECT * FROM auctions WHERE start_date=CURDATE() AND status='0' 获取所有今天开始但尚未开始的拍卖。我的问题是,我如何判断现在的时间是否是X开始时间之前的小时,以便我可以向他们发送提醒(如果是) 有什

我的mysql表中有一个
date
time
列,分别名为
start\u date
start\u time
。我希望我的用户能够在
开始时间
前X小时,至少1小时,最多24小时,为自己设置提醒

我将运行CRON脚本来发送这些提醒。现在我有:

SELECT * FROM auctions WHERE start_date=CURDATE() AND status='0'
获取所有今天开始但尚未开始的拍卖。我的问题是,我如何判断现在的时间是否是
X
开始时间之前的
小时,以便我可以向他们发送提醒(如果是)

有什么建议吗?

类似这样的建议:

选择col1、col2、col3
根据记录
其中(records.startDate介于NOW()和ADDDATE之间(NOW(),间隔9小时))
和(records.status='0');
类似这样的内容:

选择col1、col2、col3
根据记录
其中(records.startDate介于NOW()和ADDDATE之间(NOW(),间隔9小时))
和(records.status='0');

为什么不能使用简单的时间戳字段,而不是一个用于日期,一个用于时间。这样你就可以找到所有在未来5小时内开始的项目(比如说),方法是

select*从开始时间介于now()和now()之间+间隔为“5小时”的拍卖中选择;

注意:数据库之间的间隔语法略有不同,这是postgresql的语法,因此您可能需要对mysql的语法稍作更改。

是否有一些原因可以解释为什么不能使用简单的时间戳字段,而不是一个日期字段和一个时间字段。这样你就可以找到所有在未来5小时内开始的项目(比如说),方法是

select*从开始时间介于now()和now()之间+间隔为“5小时”的拍卖中选择;

注意:数据库之间的间隔语法略有不同,这是postgresql的语法,因此您可能需要对mysql的语法稍作更改。

您可以使用unixtime来节省时间吗

因为PHP有一个很棒的函数叫做

你可以这样说。strotime(“+20小时”),并从现在起获得20小时的unixtime


那么这只是哪个字段比另一个字段大的问题,如果是这样,请发送通知。

您能使用unixtime节省时间吗

因为PHP有一个很棒的函数叫做

你可以这样说。strotime(“+20小时”),并从现在起获得20小时的unixtime


那么这只是哪个字段比另一个字段大的问题,如果是这样,请发送通知。

实际上,在发送所有答案及其工作之前,我是这样做的。因为我已经到了最后期限,所以我不能回去改变它:)

$sql=“选择小时(ADDTIME(CURTIME(),“$HOUR”)作为提醒小时,选择小时(CURTIME())作为curHour”;
$result=$this->db->query($sql);
提取($result->getAllSingle());

如果($h在所有答案发送之前,我实际上是这样做的,并且它起作用了。因为我在截止日期前,我不能回去更改它:)

$sql=“选择小时(ADDTIME(CURTIME(),“$HOUR”)作为提醒小时,选择小时(CURTIME())作为curHour”;
$result=$this->db->query($sql);
提取($result->getAllSingle());

如果(为什么你会认为他在运行PHP?首先,他将使用cronjob,这是一个表明它可能不是PHP的迹象。其次,为什么你需要使用strtotime以秒计算20小时?这是基本数学…为什么cronjob表明它不是PHP?为什么你会认为他在运行PHP?首先,他会如果使用cronjob,这表明它可能不是PHP。其次,为什么需要使用strotime以秒为单位计算20小时?这是基本的数学……为什么cronjob表明它不是PHP?