为简化起见,数据库中的每条记录都有公司名称,总支出和预留的夜晚。保留的Nights以字符串的形式存储,然后在此过程中进行解析。
示例:Customer
=“Bob's Heating”Total
= 3000 Reserved
=“1/2 / 2017,1 / 3 / 2017,1 / 5/2017 ......”
我需要编写一个查询,选择所有在特定日期或之前开始预订的记录,因此如果目标日期为“1/4/2017”,则会返回Bob Heating的上述记录。
任何帮助将不胜感激, 吉姆
答案 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' )