使用BETWEEN获取在MySQL中存储为字符串的日期

时间:2018-08-03 07:37:21

标签: php mysql date

我当前正在使用的数据库表中的日期字段为varchar格式,并以dd.mm.yyyy格式给出。

例如日期:03.02.2018

上方有屏幕

date format picture

因此,当我使用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

最好的问候

谢谢。

2 个答案:

答案 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