Я хочу сравнить дату из базы данных, которая находится между двумя заданными датами. Столбец из базы данных - это DATETIME, и я хочу сравнить его только с форматом даты, а не с форматом datetime.
SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'
Я получаю эту ошибку, когда выполняю приведенный выше SQL:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'us_reg_date, 120)> =' 2000-07-05 'И ПРЕОБРАЗОВАТЬ (CHAR (10), us_reg_date, 120) <=' 2011- 'в строка 1
Как решить эту проблему?
mysql
sql
comparison
NVG
источник
источник
Это синтаксис SQL Server для преобразования даты в строку. В MySQL вы можете использовать функцию DATE для извлечения даты из datetime:
SELECT * FROM players WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'
Но если вы хотите воспользоваться индексом столбца,
us_reg_date
вы можете попробовать это вместо этого:SELECT * FROM players WHERE us_reg_date >= '2000-07-05' AND us_reg_date < '2011-11-10' + interval 1 day
источник
Это работает для меня:
select date_format(date(starttime),'%Y-%m-%d') from data where date(starttime) >= date '2012-11-02';
Обратите внимание на строку формата "% Y-% m-% d" и формат даты ввода.
источник
Я получил ответ.
Вот код:
SELECT * FROM table WHERE STR_TO_DATE(column, '%d/%m/%Y') BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
источник
вот что у меня сработало:
select * from table where column BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
Обратите внимание, что мне пришлось изменить STR_TO_DATE (столбец, '% d /% m /% Y') из предыдущих решений, так как загрузка занимала много времени
источник