如何返回日期在数组中小于特定日期的记录

时间:2017-02-17 00:53:11

标签: php mysql

为简化起见,数据库中的每条记录都有公司名称,总支出和预留的夜晚。保留的Nights以字符串的形式存储,然后在此过程中进行解析。 示例:Customer =“Bob's Heating”Total = 3000 Reserved =“1/2 / 2017,1 / 3 / 2017,1 / 5/2017 ......”

我需要编写一个查询,选择所有在特定日期或之前开始预订的记录,因此如果目标日期为“1/4/2017”,则会返回Bob Heating的上述记录。

任何帮助将不胜感激, 吉姆

2 个答案:

答案 0 :(得分:0)

1。)在数据库中创建一个名为" reservation_dates"的新表。具有列:row_id(INT),the_date(DATE)

2.。)在PHP中运行一个脚本,将所有这些日期移动到另一个表中,将它们存储为DATE数据类型。

示例PHP脚本:

$statement = "SELECT * FROM my_table";
$result = mysqli_query($con, $statement) or die(mysqli_error($con));
while ($row = mysqli_fetch_assoc($result))
    {
    $dates = explode(",", $row['Reserved']);
    foreach($dates as $date)
       {
        mysqli_query($con, "INSERT INTO reservation_dates (row_id, the_date) VALUES ('".$row['id']."', '$date')") or die(mysqli_error($con));
       }
    }

运行PHP脚本。现在,您将所有日期都保存在名为reservation_dates的关系表中。

接下来,要选择1/4/2017内的所有行,请运行

等查询
SELECT customer.* FROM reservation_dates reservation JOIN my_table customer ON customer.id = reservation.row_id WHERE MAX(reservation.the_date) >= '2017-04-01' AND MIN(reservation.the_date) <= '2017-04-01' GROUP BY row_id

我在没有真正尝试代码的情况下快速输入了这个,但这是我将采取的一般方法。希望它有所帮助!

答案 1 :(得分:0)

select *  
from dbo.March2010 A 
where A.Date <= Convert(datetime, '2010-04-01' )