У меня есть SQL-оператор, который должен сравнивать datetime из БД и JqueryUI datepicker со стороны клиента. Это то, что я пробовал до сих пор:
<script>
$(function() {
$( "#calendar" ).datepicker({
maxDate: "+0m +0w"});
});
</script>
$date = $_POST['calendar'];
$SQL = "SELECT $table.item, $table.price, paying_$table.date_bought". " FROM $table". " JOIN paying_$table". " ON $table.id_$table = paying_$table.id_$table". " JOIN users on users.id_user = paying_$table.id_user". " WHERE paying_$table.id_user = '$id' ". " AND paying_$table.date_bought BETWEEN $date AND NOW() ";
$result = $db->query($SQL); //etc etc...
$ table это переменная, которую я получаю из оператора switch, так что в этой части все правильно. На что я подозреваю последние 2 строчки SQL.
Когда я попытался сбросить этот оператор SQL, функция NOW () не выполняется, она просто возвращает строку NOW ().
Тип даты в MySQL является datetime.
Спасибо
Попробуй так
$date = date( 'Y-m-d', strtotime($_POST['calendar'] ) );
Скорее всего, вы сравниваете даты в разных форматах. Исходя из вашего комментария, ваш формат выглядит m/d/Y
тогда как MySQL DATETIME
поле Y-m-d H:i:s
(только Y-m-d
если ваше поле просто DATE
)
Вы можете легко предварительно отформатировать вашу дату, чтобы соответствовать требуемому формату MySQL, используя php DateTime родной класс:
$date = DateTime::createFromFormat('m-d-Y', $_POST['calendar'])->format('Y-m-d')
Кроме того, укажите в вашем запросе переменную $ date:
. " AND paying_$table.date_bought BETWEEN '$date' AND NOW() ";
Вы проверили формат переменной $ date? MySQL DATETIME формат по умолчанию yyyy-mm-dd hh:mm:ss
,