如何在php/codeigniter或mysql中获得两个相差20分钟的日期的所有组合

Posted

技术标签:

【中文标题】如何在php/codeigniter或mysql中获得两个相差20分钟的日期的所有组合【英文标题】:how to get all combination of two dates with 20 minutes difference in php/codeigniter or either mysql 【发布时间】:2016-01-10 00:41:14 【问题描述】:

我的数据库中有这个:

我想在选择框中显示医生的可用时间,相差 20 分钟,例如从

2015-10-12 02:00:002015-10-12 04:00:00 我需要的是

02:00:00
02:20:00
02:40:00
03:00:00
03:20:00
03:40:00
04:00:00

我试过这个select '2015-10-12 02:00:00' + INTERVAL 20 MINUTE,但它只显示一个值,我需要所有可能的组合。

【问题讨论】:

使用 mysql between :- BETWEEN date1 AND date2 @Rahautos 你能给我看看例子吗? 【参考方案1】:

用户 DateTime()DateInterval()DatePeriod() 每 20 分钟循环一次该日期时间段并输出时间。请注意,我们必须在结束时间上添加一分钟,因为默认情况下DatePeriod 包括最后结束时间。添加该分钟将获得最后一次被包括在内。

$start    = new DateTime('2015-10-12 02:00:00');
$end      = (new DateTime('2015-10-12 04:00:00'))->modify('+1 minute');
$interval = new DateInterval('PT20M');
$period   = new DatePeriod($start, $interval, $end);
foreach($period as $date) 
    echo $date->format('H:i:s');

Demo

【讨论】:

这在应用层更容易做到,除非数据库有一个包含所有时隙的表。 @john 此代码工作正常。但为什么这会在编辑器中显示错误。 ? 我不能肯定地说,但您的编辑器可能不知道此代码使用的某些语法。你用的是什么编辑器? 我正在使用 Dream Viewer。 :p 啊,这不是最好的编辑器,尤其是对于 php 代码。这可以解释为什么它不能处理它。

以上是关于如何在php/codeigniter或mysql中获得两个相差20分钟的日期的所有组合的主要内容,如果未能解决你的问题,请参考以下文章

PHP,Codeigniter:如何在Web应用程序中根据用户时区/位置设置日期/时间?

如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?

如何在 mysql 中修复或删除/创建损坏的表?

PHP CodeIgniter - MySQL 工作台

在 php codeigniter 中使用 join/concat 的 mysql 查询结果

如何在视频上传时创建缩略图? [php/codeigniter]