Chcę porównać datę z bazy danych, która jest między dwoma podanymi datami. Kolumna z bazy danych to DATETIME i chcę porównać ją tylko z formatem daty, a nie z formatem daty i godziny.
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'
Otrzymuję ten błąd, gdy wykonuję powyższy kod SQL:
Masz błąd w składni SQL; sprawdź podręcznik, który odpowiada Twojej wersji serwera MySQL, aby znaleźć właściwą składnię, której należy użyć w pobliżu 'us_reg_date, 120)> =' 2000-07-05 'AND CONVERT (CHAR (10), us_reg_date, 120) <=' 2011- 'at linia 1
Jak można rozwiązać ten problem?
mysql
sql
comparison
NVG
źródło
źródło
To jest składnia SQL Server do konwersji daty na ciąg. W MySQL możesz użyć funkcji DATE, aby wyodrębnić datę z daty i godziny:
SELECT * FROM players WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'
Ale jeśli chcesz skorzystać z indeksu w kolumnie,
us_reg_date
możesz zamiast tego spróbować tego:SELECT * FROM players WHERE us_reg_date >= '2000-07-05' AND us_reg_date < '2011-11-10' + interval 1 day
źródło
To działa dla mnie:
select date_format(date(starttime),'%Y-%m-%d') from data where date(starttime) >= date '2012-11-02';
Zwróć uwagę na ciąg formatu „% Y-% m-% d” i format daty wejściowej.
źródło
Mam odpowiedź.
Oto kod:
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')
źródło
tak to zadziałało dla mnie:
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')
Proszę zauważyć, że musiałem zmienić STR_TO_DATE (kolumna, '% d /% m /% Y') z poprzednich rozwiązań, ponieważ ładowanie trwało wieki
źródło