Come utilizzare l'operatore maggiore di con data?


106

Non ho idea di cosa stia succedendo qui. Ecco la query, direttamente da phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Ma ottengo costantemente restituiti tutti i record nella tabella, compresi quelli con data di inizio 2012-11-01. Cosa succede?


1
La tua colonna start_date è di tipo data o timestamp?
Shamis Shukoor

Risposte:


191

hai chiuso start_datecon virgolette singole facendolo diventare una stringa, usa backtickinvece

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

1
cosa succede se il suo timestamp?
ichimaru

Vale la pena notare che MySQL sembra un po 'esigente riguardo al formato della data; mentre il 2019/02/08 21:04:07 o il 2019-02-08 21:04:07 produce il risultato atteso, 02-08-2019 21:04:07, utilizzando il formato della data statunitense, getta una rete molto più ampia .
David A. Gray,

22

Nella tua dichiarazione, stai confrontando una stringa chiamata data_inizio con l'ora.
Se start_date è una colonna, dovrebbe essere

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(nessun apostrofo) o


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(con backtick).

Spero che questo ti aiuti.



2

Nel mio caso la mia colonna era un datetime che continuava a darmi tutti i record. Quello che ho fatto è includere il tempo, vedi l'esempio sotto

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

0

Ho provato ma soprattutto non funziona dopo la ricerca trovata sotto la soluzione.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

arbitro

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.