我当前正在使用的数据库表中的日期字段为varchar格式,并以dd.mm.yyyy格式给出。
例如日期:03.02.2018
上方有屏幕
因此,当我使用ajax发送数据时,无法正常工作。
下面有代码
function clean($data) {
global $con;
$data = mysqli_real_escape_string($con, strip_tags($data));
return $data;
}
$start_date = clean($_POST['start']);
$end_date = clean($_POST['end']);
if (isset($start_date) && isset($end_date)) {
$get_date = "SELECT * FROM records WHERE reservations BETWEEN '$start_date' AND '$end_date' ";
}
开始日期和结束日期是相同的,例如今天或昨天。但是当日期不同时,例如开始日期:03.02.2018结束日期:03.03.2018
最好的问候
谢谢。
答案 0 :(得分:3)
如果您使用DATE
列类型而不是varchar,则将来将解决此问题和其他问题。这样您就可以在MySQL中使用日期函数。
如果出于某种原因您不能或根本不需要,则需要在执行BETWEEN
之前将列转换为日期:
SELECT * FROM records
WHERE STR_TO_DATE(reservations,'%d.%m.%Y')
BETWEEN '$start_date' AND '$end_date';--Don't use variables directly
此外,您不想在数据库查询中使用原始输入。恶意用户可能会将SQL发送到您的数据库并造成损害。
最好使用转义,甚至最好使用用户参数化查询。该网站上有一些问题可以帮助您解决问题。
答案 1 :(得分:0)
您的SQL查询使用表“ reservations”,但在图像中使用“ rezervasyon_tarihi”。 也许应该是“ SELECT * FROM records where'rezervasyon_tarihi BETWEEN'$ start_date'AND'$ end_date'“;
因此,我认为本主题将帮助您SQL Between clause with strings columns