Я пытаюсь выбрать строки, которые в течение определенного периода времени:Mysql дата интервал
$sql = mysql_query(" SELECT * FROM table WHERE ... AND
date BETWEEN ('$date' - Interval 2 YEAR) AND ('$date' + Interval 2 YEAR)
OR date ISNULL");
Формат даты, сохраненных в этом столбце мм/дд/гггг
а. как выбрать временной интервал? в настоящее время он выбирает все строки, а не только те, которые находятся в пределах этого диапазона дат.
b. Я использую синтаксис corret, чтобы убедиться, что мы включили все нулевые опции?
Обновление.
После ответов и комментариев я изменил тип столбца на «Дата» (это был varchar), а также изменил текущий тип существующих записей на правильный формат даты.
У меня теперь есть 2 вопроса: a. Это все еще не работает ... Что еще может быть проблемой? b. Я хочу изменить на PHP, где запись сохраняется. Как мне это сделать? Правильно ли указано следующее:
$new_date = mysql_query("STR_TO_DATE($old_date_string,'%m/%d/%Y')");
Решение.
Во-первых, я изменил тип столбца на DATE (из VARCHAR).
Во-вторых, я переместил все существующие записи из существующего столбца и напечатал (str) новый тип (дата) и новый столбец.
В-третьих, я добавил круглые скобки в раздел «дата».
В-четвертых, я изменил ISNULL
на IS NULL
- добавьте пробел, который меняет его из функции в оператор.
В-пятых, теперь я обновляю свой сценарий, чтобы в будущих датах сохранялся новый столбец нового типа, преобразовывая их в правильный fprmat, прежде чем сохранять их в базе данных.
Thankyou @nnicholas и все.
Вы должны начать с хранения ваших дат в полях типа DATE. Ваша жизнь будет намного легче. – nnichols
Ваши даты хранятся как varchar или что-то еще? стандартный формат даты будет yyyy-MM-dd –
это действительно varchar –