Конвертировать дату в mysql - PullRequest
0 голосов
/ 05 июня 2018

У меня есть поле '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';

Спасибо.

Ответы [ 4 ]

0 голосов
/ 05 июня 2018

Лучше использовать 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'
0 голосов
/ 05 июня 2018

попробуй ...

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' 
0 голосов
/ 05 июня 2018

Вы можете попробовать это.Я надеюсь, что это поможет вам.

$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."'";
0 голосов
/ 05 июня 2018

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

...