我的查询有问题。它给了我在某些情况下的正确结果,而对于某些情况,它给了我正确的结果,所以如果有人能告诉我要改变什么,那将是惊人的,因为我现在已经坚持了一段时间。这里是我的表中的数据:MySQL查询日期比较
表reservation_logs:
log_id int(15) auto_increment Primary Unique
room_log int(10)
dt_from date
dt_until date
表公寓:
apartman_id int(10) auto_increment Primary Unique
apartman_name int(10)
我的日期PHP代码:
$date_from = 'text input date';
$date_until = 'text input date';
$myquery = ("SELECT * FROM reservation_logs WHERE room_log = '$apartman_id'
AND(((dt_from >= '$date_from' AND dt_from <= '$date_until')
AND (dt_until >= '$date_until' OR dt_until <= '$date_until')))");
现在我输入一些日期我应该得到正确apartman_id
,如果它忙或不。以下是这种情况:当$date_from
等于当月的第一天,$date_until
等于一个月中的最后一天。但是,例如,如果我选择的日期为$date_from
等于该月的第16个月,而$date_until
等于该月的第17个月,如果从第15个月的第15个月到第19个可以说的空间繁忙,我会得到不正确的结果。我希望我不会让更多的人想到背后的想法太复杂了。
这与您的问题没有直接关系,但是您在此代码中存在一些严重的SQL注入漏洞,您应该清理这些漏洞。确保在mysql_real_escape_string()或某些类似的函数中将所有输入包含到查询中。 – Asaph
这只是练习m8,它永远不会看到我向你保证的网络 – ant
请记住,在内部,日期列包括日期和时间。如果你想选择从15日到16日的所有日期,你需要dt> = 15th和dt <17th(即16日在11:59.59.999 PM或更早) –