У меня есть поле dob с типом varchar, а в моей базе данных есть данные «12/07/1988» и «10/30/1988».
Я хочу отфильтровать базу записей по диапазону дат "dob". Мой диапазон дат - "01.01.1988" и "31.12.1988", но все остальные записи также выходят.
Это мой код, кто-нибудь может помочь?
SELECT
dob
FROM
`tblcustomers`
WHERE
DATE_FORMAT(STR_TO_DATE(dob, "%m/%d/%Y"), "%d/%m/%Y") >= '01/01/1988'
AND
DATE_FORMAT(STR_TO_DATE(dob, "%m/%d/%Y"), "%d/%m/%Y") <= '31/12/1988';
Спасибо.






Диапазон дат будет работать с типом даты sql, а не с varchar, поэтому сначала измените его на тип даты и вставьте дату в формате yyyy-mm-dd, затем вы можете использовать диапазон, он будет работать
но в предыдущей записи использовался формат мм / дд / гггг, значит, нет других способов, кроме изменения типа даты?
попробуйте STR_TO_DATE (yourdatefield, '% m /% d /% Y')
попытайся...
SELECT dob FROM tblcustomers where DATE_FORMAT(STR_TO_DATE(dob, '%m/%d/%Y'), '%Y-%m-%d') between '1988-01-01' and '1988-12-31'
Вы можете попробовать это. Надеюсь, это вам поможет.
$from_date = date("Y-m-d",strtotime('01/01/1988'));
$to_date = date("Y-m-d",strtotime('31/12/1988'));
$query = "SELECT * FROM tblcustomers WHERE from_date >= '".$from_date."' AND to_date <= '".$to_date."'";
Лучше использовать DATE / DATETIME, чем VARCHAR, иначе он будет тратить время на преобразование строки в дату все время, когда у вас есть запросы.
Вы можете просто изменить свое поле dob на DATE
а затем отфильтруйте запись следующим образом
SELECT * FROM tblcustomers WHERE dob BETWEEN '1988-01-01' AND '1988-12-31'
Примечание: при использовании МЕЖДУ ... И "1988-01-01" и "1988-12-31" не будут включены
поэтому вы можете уменьшить начальный день на 1 день и увеличить конечный день на 1 день это может выглядеть так
SELECT * FROM tblcustomers WHERE dob BETWEEN '1987-12-31' AND '1989-01-01'
или более простой способ, аналогичный тому, что вы сделали, также возможен этот
SELECT * FROM tblcustomers WHERE dob >= '1988-01-01' AND dob <= '1988-12-31'
сначала используйте правильный формат даты для даты sql, которая составляет yyyy-mm-dd, и прекратите использовать дату использования varchar вместо этого, тогда она будет работать