it-swarm.com.de

Daten in MySQL vergleichen

Ich möchte ein Datum aus einer Datenbank vergleichen, das zwischen zwei angegebenen Datumsangaben liegt .. Die Spalte aus der Datenbank ist DATETIME, und ich möchte es nur mit dem Datumsformat und nicht mit dem Datumszeitformat vergleichen.

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'

Ich erhalte diesen Fehler, wenn ich die SQL oben ausführte:

Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das .__ entspricht. Ihre MySQL-Server-Version für die richtige Syntax für die Verwendung in der Nähe von 'us_reg_date, 120)> =' 2000-07-05 'AND CONVERT (CHAR (10), us_reg_date, 120) <= "2011-" in Zeile 1

Wie kann dieses Problem behoben werden?

66
NVG

Sie können unter Abfrage versuchen,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)
66
Nik

Das ist SQL Server-Syntax zum Konvertieren eines Datums in einen String. In MySQL können Sie die Funktion DATE verwenden, um das Datum aus einer datetime zu extrahieren:

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

Wenn Sie jedoch einen Index für die Spalte us_reg_date nutzen möchten, können Sie dies stattdessen versuchen:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day
72
Mark Byers

Das funktioniert für mich:

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

Beachten Sie die Formatzeichenfolge '% Y-% m-% d' und das Format des Eingabedatums.

7
Rahatur

hey Jungs Danke für Ihre Hilfe, ich habe die Antwort bekommen.

hier ist der code .......

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')
6
Gurjeet Singh

das hat es für mich funktioniert:

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')

Bitte beachten Sie, dass ich STR_TO_DATE (Spalte "% d /% m /% Y") von vorherigen Lösungen ändern musste, da das Laden einige Zeit in Anspruch nahm

0