Сравните даты в MySQL - PullRequest
       6

Сравните даты в MySQL

75 голосов
/ 06 сентября 2010

Я хочу сравнить дату из базы данных, которая находится между 2 указанными датами. Столбец из базы данных - 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 'AND CONVERT (CHAR (10), us_reg_date, 120) <= '2011-' в строке 1 </p>

Как можно решить эту проблему?

Ответы [ 5 ]

81 голосов
/ 06 сентября 2010

То есть Синтаксис SQL Server для преобразования даты в строку.В MySQL вы можете использовать функцию DATE для извлечения даты из даты и времени:

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
73 голосов
/ 06 сентября 2010

Вы можете попробовать ниже запрос,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)
8 голосов
/ 30 декабря 2013

Это работает для меня:

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

Обратите внимание на строку формата «% Y-% m-% d» и формат введенной даты.

6 голосов
/ 03 декабря 2015

Эй, ребята, спасибо за вашу помощь, я получил ответ.

вот код .......

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')
0 голосов
/ 07 ноября 2017

вот что у меня сработало:

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") по сравнению с предыдущими решениями, поскольку для загрузки

потребовалось много времени *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...