Конвертировать дату в MySQL

У меня есть поле 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, которая составляет yyyy-mm-dd, и прекратите использовать дату использования varchar вместо этого, тогда она будет работать

Shubh 05.06.2018 06:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
169
4

Ответы 4

Диапазон дат будет работать с типом даты sql, а не с varchar, поэтому сначала измените его на тип даты и вставьте дату в формате yyyy-mm-dd, затем вы можете использовать диапазон, он будет работать

но в предыдущей записи использовался формат мм / дд / гггг, значит, нет других способов, кроме изменения типа даты?

Panda 05.06.2018 06:28

попробуйте STR_TO_DATE (yourdatefield, '% m /% d /% Y')

Shubh 05.06.2018 06:30

попытайся...

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'

Другие вопросы по теме