在php中获取小时之间的数据
我有一段这样的时光在php中获取小时之间的数据,php,mysql,sql,Php,Mysql,Sql,我有一段这样的时光2013-08-12 12:58:14。现在我需要一个小时,所以我使用以下代码: $date = "2013-08-12 12:58:14"; $date = strtotime($date); $hour = date('H', $date); 所以我得到了$hour=12;现在我有了另一个参数$tohour=5(它是用户定义的,值在1到24之间);现在12-5=7意味着在7到12之间提取数据 另一个例子: 假设时间是2013-08-12 01:15:23和$tohour
2013-08-12 12:58:14
。现在我需要一个小时,所以我使用以下代码:
$date = "2013-08-12 12:58:14";
$date = strtotime($date);
$hour = date('H', $date);
所以我得到了$hour=12
;现在我有了另一个参数$tohour=5
(它是用户定义的,值在1到24之间);现在12-5=7
意味着在7到12之间提取数据
另一个例子:
假设时间是2013-08-12 01:15:23
和$tohour=10
现在,这一次数据获取介于2013-08-11 15:15:23
到2013-08-12 01:15:23
之间
那么如何实现呢?我试图解释我的问题,但如果不清楚,请让我知道或免费填写以编辑我的问题和标题。您可以使用strotime轻松获取往返时间:
$baseTime = strtotime('2013-08-12 01:15:23');
$from = strtotime('+'.$hour.' hours',$basetime);
$to = strtotime('+'.$tohour.' hours',$basetime);
echo "From: ".date("Y-m-d H:i:s",$from)."\n";
echo "To: ".date("Y-m-d H:i:s",$to)."\n";
或者在mysql中:
SELECT
*
FROM
`table`
WHERE
`time`
BETWEEN
DATE_ADD('$time',INTERVAL $hour HOUR)
AND
DATE_ADD('$time',INTERVAL $tohour HOUR)
使用strotime,您可以轻松获取往返时间:
$baseTime = strtotime('2013-08-12 01:15:23');
$from = strtotime('+'.$hour.' hours',$basetime);
$to = strtotime('+'.$tohour.' hours',$basetime);
echo "From: ".date("Y-m-d H:i:s",$from)."\n";
echo "To: ".date("Y-m-d H:i:s",$to)."\n";
或者在mysql中:
SELECT
*
FROM
`table`
WHERE
`time`
BETWEEN
DATE_ADD('$time',INTERVAL $hour HOUR)
AND
DATE_ADD('$time',INTERVAL $tohour HOUR)
使用strotime,您可以轻松获取往返时间:
$baseTime = strtotime('2013-08-12 01:15:23');
$from = strtotime('+'.$hour.' hours',$basetime);
$to = strtotime('+'.$tohour.' hours',$basetime);
echo "From: ".date("Y-m-d H:i:s",$from)."\n";
echo "To: ".date("Y-m-d H:i:s",$to)."\n";
或者在mysql中:
SELECT
*
FROM
`table`
WHERE
`time`
BETWEEN
DATE_ADD('$time',INTERVAL $hour HOUR)
AND
DATE_ADD('$time',INTERVAL $tohour HOUR)
使用strotime,您可以轻松获取往返时间:
$baseTime = strtotime('2013-08-12 01:15:23');
$from = strtotime('+'.$hour.' hours',$basetime);
$to = strtotime('+'.$tohour.' hours',$basetime);
echo "From: ".date("Y-m-d H:i:s",$from)."\n";
echo "To: ".date("Y-m-d H:i:s",$to)."\n";
或者在mysql中:
SELECT
*
FROM
`table`
WHERE
`time`
BETWEEN
DATE_ADD('$time',INTERVAL $hour HOUR)
AND
DATE_ADD('$time',INTERVAL $tohour HOUR)
在MySQL中
SELECT fields
FROM table
WHERE timefield BETWEEN DATE_SUB('$date', INTERVAL $tohour HOUR) AND '$date'
在MySQL中
SELECT fields
FROM table
WHERE timefield BETWEEN DATE_SUB('$date', INTERVAL $tohour HOUR) AND '$date'
在MySQL中
SELECT fields
FROM table
WHERE timefield BETWEEN DATE_SUB('$date', INTERVAL $tohour HOUR) AND '$date'
在MySQL中
SELECT fields
FROM table
WHERE timefield BETWEEN DATE_SUB('$date', INTERVAL $tohour HOUR) AND '$date'
在普通PHP中:
$toHour = 10;
$dateTo = \DateTime::createFromFormat('Y-m-d H:i:s', '2013-08-12 12:58:14');
$dateFrom = clone $dateTo;
$dateFrom->sub(new \DateInterval('PT'.$toHour.'H'));
var_dump(
'From: ' . $dateFrom->format('Y-m-d H:i:s'),
'To: ' . $dateTo->format('Y-m-d H:i:s')
);
但就个人而言,我会选择MySQL解决方案
当然,这个解决方案是针对普通PHP中的PHP5>=5.3.0的:
$toHour = 10;
$dateTo = \DateTime::createFromFormat('Y-m-d H:i:s', '2013-08-12 12:58:14');
$dateFrom = clone $dateTo;
$dateFrom->sub(new \DateInterval('PT'.$toHour.'H'));
var_dump(
'From: ' . $dateFrom->format('Y-m-d H:i:s'),
'To: ' . $dateTo->format('Y-m-d H:i:s')
);
但就个人而言,我会选择MySQL解决方案
当然,这个解决方案是针对普通PHP中的PHP5>=5.3.0的:
$toHour = 10;
$dateTo = \DateTime::createFromFormat('Y-m-d H:i:s', '2013-08-12 12:58:14');
$dateFrom = clone $dateTo;
$dateFrom->sub(new \DateInterval('PT'.$toHour.'H'));
var_dump(
'From: ' . $dateFrom->format('Y-m-d H:i:s'),
'To: ' . $dateTo->format('Y-m-d H:i:s')
);
但就个人而言,我会选择MySQL解决方案
当然,这个解决方案是针对普通PHP中的PHP5>=5.3.0的:
$toHour = 10;
$dateTo = \DateTime::createFromFormat('Y-m-d H:i:s', '2013-08-12 12:58:14');
$dateFrom = clone $dateTo;
$dateFrom->sub(new \DateInterval('PT'.$toHour.'H'));
var_dump(
'From: ' . $dateFrom->format('Y-m-d H:i:s'),
'To: ' . $dateTo->format('Y-m-d H:i:s')
);
但就个人而言,我会选择MySQL解决方案
当然,这个解决方案是针对PHP5>=5.3.0的,我更喜欢用PHP进行一些计算,并使用简单的mysql查询
$timeEnd = '2013-08-12 01:15:23';
$toHour = 10;
$timeStart = date('Y-m-d H:i:s', strtotime($timeEnd) - $toHour * 3600);
echo "Fetch data between $timeStart to $timeEnd";
// Result: Fetch data between 2013-08-11 15:15:23 to 2013-08-12 01:15:23
然后,我们得到2个日期字符串,用它们进行db查询,请参见:
我更喜欢用PHP进行一些计算,并使用简单的mysql查询
$timeEnd = '2013-08-12 01:15:23';
$toHour = 10;
$timeStart = date('Y-m-d H:i:s', strtotime($timeEnd) - $toHour * 3600);
echo "Fetch data between $timeStart to $timeEnd";
// Result: Fetch data between 2013-08-11 15:15:23 to 2013-08-12 01:15:23
然后,我们得到2个日期字符串,用它们进行db查询,请参见:
我更喜欢用PHP进行一些计算,并使用简单的mysql查询
$timeEnd = '2013-08-12 01:15:23';
$toHour = 10;
$timeStart = date('Y-m-d H:i:s', strtotime($timeEnd) - $toHour * 3600);
echo "Fetch data between $timeStart to $timeEnd";
// Result: Fetch data between 2013-08-11 15:15:23 to 2013-08-12 01:15:23
然后,我们得到2个日期字符串,用它们进行db查询,请参见:
我更喜欢用PHP进行一些计算,并使用简单的mysql查询
$timeEnd = '2013-08-12 01:15:23';
$toHour = 10;
$timeStart = date('Y-m-d H:i:s', strtotime($timeEnd) - $toHour * 3600);
echo "Fetch data between $timeStart to $timeEnd";
// Result: Fetch data between 2013-08-11 15:15:23 to 2013-08-12 01:15:23
然后,我们得到2个日期字符串,用它们进行db查询,请参见:
数据库中是否有带时间戳的表?是的,我有带时间戳的表。数据库中是否有带时间戳的表?是的,我有带时间戳的表。数据库中是否有带时间戳的表?是的,我有带时间戳的表。数据库中是否有带时间戳的表?是的,我有一张带有时间戳的表。您的$todate
值是多少?您的意思是$tohour
?呃,在3和0之间选择1;->0是真的。当我交换它时,此查询有效,请更新它。感谢您的帮助。您的$todate
值是多少?您的意思是$tohour
?呃,在3和0之间选择1;->0是真的。当我交换它时,此查询有效,请更新它。感谢您的帮助。您的$todate
值是多少?您的意思是$tohour
?呃,在3和0之间选择1;->0是真的。当我交换它时,此查询有效,请更新它。感谢您的帮助。您的$todate
值是多少?您的意思是$tohour
?呃,在3和0之间选择1;->0ya true..当我交换它时,此查询有效,请更新它。感谢您的帮助。我尝试您的查询,它看起来像SELECT*FROM cdr,其中calldate介于DATE\u ADD('2012-08-29 23:00:00',INTERVAL 23小时)和DATE\u ADD('2012-08-29 23:00',INTERVAL 5小时)
之间,但它没有获取数据。在数据库中,数据介于2012-08-29 21:18:23
到2012-08-29 21:49:23
之间。这基本上可以转化为这个查询:从cdr中选择*当调用日期介于'2012-08-30 22:00:00'和'2012-08-30 04:00:00'之间时,这就是您想要的吗?我尝试了您的查询,它看起来像是从cdr中选择*在日期之间添加调用日期('2012-08-29 23:00:00',间隔23小时)和日期(2012-08-29 23:00:00',间隔5小时)
但它没有提取数据。在数据库中,数据介于2012-08-29 21:18:23
到2012-08-29 21:49:23
之间。这基本上可以转换为这个查询:从cdr中选择*当调用日期介于'2012-08-30 22:00:00'和'2012-08-30 04:00:00:00'之间时,这是您想要的吗?我尝试了您的查询,它看起来像是从cdr中选择*日期添加('2012-08-29 23:00:00',间隔23小时)和日期添加('2012-08-29 23:00:00',间隔5小时)之间的日期但它没有提取数据。在数据库中,数据介于2012-08-29 21:18:23
到2012-08-29 21:49:23
之间。这基本上可以转换为这个查询:从cdr中选择*当调用日期介于'2012-08-30 22:00:00'和'2012-08-30 04:00:00:00'之间时,这是您想要的吗?我尝试了您的查询,它看起来像是从cdr中选择*日期添加('2012-08-29 23:00:00',间隔23小时)和日期添加('2012-08-29 23:00:00',间隔5小时)之间的日期但它没有获取数据。在数据库中,数据介于2012-08-29 21:18:23
到2012-08-29 21:49:23
之间。这基本上就是这个查询:从cdr中选择*调用日期在'2012-08-30 22:00:00'和'2012-08-30 04:00:00'之间,这就是您想要的吗?