2012-11-16 15 views
6

Sto cercando i seguenti, ma ottenere risultati:Selezionare l'intervallo di date su MySQL timestamp

SELECT * 
FROM users_test 
WHERE dateadded >= UNIX_TIMESTAMP('2012-02-01 00:00:00') 
AND dateadded < UNIX_TIMESTAMP('2012-11-01 00:00:00'); 

Eppure so che ci sono le colonne con date all'interno di tale intervallo per esempio

2012-05-11 17:10:08 

C'è un modo migliore per farlo?

Alla fine voglio cercare più parametri, anche se non allo stesso tempo, come oggi, ieri, la settimana scorsa, il mese scorso, ecc e anche un intervallo di date e la gamma mese

+4

è la vostra colonna memorizzare i valori come un timestamp UNIX o come un timestamp (ad esempio '2012-05-11 17: 10: 08')? È stato incollato un esempio di una colonna all'interno di tale intervallo, ma non è un timestamp UNIX che mi fa meravigliare. Stai confrontando le date con un timestamp UNIX e potresti dover semplicemente confrontare con il timestamp. – Maccath

risposta

13

Hai provato?

SELECT * 
FROM users_test 
WHERE dateadded >= '2012-02-01 00:00:00' 
AND dateadded < '2012-11-01 00:00:00' 

Per quello che posso vedere, sembra che il vostro tavolo ha i dati memorizzati nello stesso modo in cui si desidera cercare per esso (2012-05-11 17:10:08), quindi in questo caso non sarà necessario UNIX_TIMESTAMP.

Anche io posso vedere che si desidera escludere il 2 ° data dai risultati (perché si sta utilizzando < invece di <=), altrimenti utilizzando WHERE dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00' sarebbe bene così ...

+3

Questa era la mia linea di pensiero. :) – Maccath

4

basta usare la parola chiave SQL BETWEEN . È tutto.

3

provare questo:

SELECT * FROM 
     users_test 
WHERE 
    dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00' 
0
SELECT * FROM table_name WHERE DATE(date_field) between '2015-05-10' and '2015-05-21` 
Problemi correlati