Php 在mysql中显示不同时间范围内的不同数据

Php 在mysql中显示不同时间范围内的不同数据,php,mysql,Php,Mysql,我有这个表向用户显示事务记录。但我想展示的数据是从今天下午6点到明天凌晨2点。我已尝试使用当前日期来选择数据。然而,我意识到一旦时间过了凌晨12点,从下午6点到凌晨12点的数据就消失了,只剩下从凌晨12点到凌晨2点的数据。所以我创建了一个if-else方法,只显示当前日期下午6点到11点59分的数据,另一个方法显示当前日期下午6点到凌晨2点的数据,但它似乎不起作用。我可以知道有什么问题吗 <?php include_once '../

我有这个表向用户显示事务记录。但我想展示的数据是从今天下午6点到明天凌晨2点。我已尝试使用当前日期来选择数据。然而,我意识到一旦时间过了凌晨12点,从下午6点到凌晨12点的数据就消失了,只剩下从凌晨12点到凌晨2点的数据。所以我创建了一个if-else方法,只显示当前日期下午6点到11点59分的数据,另一个方法显示当前日期下午6点到凌晨2点的数据,但它似乎不起作用。我可以知道有什么问题吗

<?php
                            include_once '../tmkdashboard/includes/db.php';
                                $admin_session = $_SESSION['u_admin'];
                                $currenttime = new DateTime('2014-09-08 06:00:00');
                                $hour = $deliverytime->format('H');

                                $get_member = "SELECT * 
                                               FROM transaction_record_tpg
                                               WHERE ";

                                if($hour >= 0 && $hour <= 2 ){

                                        $get_member.= "collect_outlet = '$admin_session'

                                              AND collected_datetime >= CURRENT_DATE - INTERVAL 6 HOUR
                                              AND collected_datetime <= CURRENT_DATE + INTERVAL 2 HOUR";

                                    } elseif($hour >= 18 && $hour <= 23 ) {

                                        $get_member.= "collect_outlet = '$admin_session' 
                                               AND collected_datetime >= CURRENT_DATE - INTERVAL 18 HOUR
                                               AND collected_datetime <= CURRENT_DATE + INTERVAL 17 HOUR";
                            };             
                                $get_member.= ";";

                                $run_customer = mysqli_query($conn,$get_member);

                                $i = 0;



                                while($row_orders = mysqli_fetch_array($run_customer)){

                                $id = $row_orders['trans_id'];

                                $user = $row_orders['user_id'];

                                $debit = $row_orders['m_debit'];

                                $credit = $row_orders['m_credit'];

                                $date = $row_orders['collected_datetime'];

                                $i++;


                            ?>
                        <tr><!-- tr Starts -->

                            <td><?php echo $i; ?></td>
                            <td><?php echo $id; ?></td>
                            <td><?php echo $user; ?></td>
                            <td><?php echo $debit; ?></td>
                            <td><?php echo $credit; ?></td>
                            <td><?php echo $date; ?></td>


                        </tr><!-- tr Ends -->
                            <?php } ?>

要将今天下午6点的交易拉至明天凌晨2点,请尝试以下选择查询:

SELECT * 
  FROM transaction_record_tpg
WHERE collect_outlet = '$admin_session'
  AND collected_datetime >= STR_TO_DATE(CONCAT(CURDATE(), ' 18:00:00'),'%Y-%m-%d %H:%i:%s')
  AND collected_datetime <= STR_TO_DATE(CONCAT(DATE_ADD(CURDATE(), INTERVAL 1 DAY), ' 02:00:00'),'%Y-%m-%d %H:%i:%s');
选择*
从交易记录到tpg
其中collect_outlet=“$admin_session”
和收集的日期时间>=STR\u到日期(CONCAT(CURDATE(),'18:00:00'),“%Y-%m-%d%H:%i:%s”)

你的查询是正确的,但我想实现的是:假设今天是26号,我想显示从下午6点到27号凌晨2点的数据。但问题是,当当前时间是27日上午12点或更晚时,从下午6点到下午11点59分的26日记录就没有显示出来。我希望查询显示从26日下午6点到27日中午12点下午11点59分或更晚的记录。然后,在27日下午6点或更晚,它显示了从27日下午6点到28日凌晨2点的记录数据。@laowai0609 Genome演示了如何最好地解决sql中的问题。如果你还在苦苦挣扎,向他们学习,并相应地修改你的问题。