Seleziona record tra 2 date non funziona

  • Creatore Discussione Creatore Discussione Scream
  • Data di inizio Data di inizio

Scream

Nuovo Utente
20 Apr 2011
1
0
0
ciao a tutti ecco il problema che mi affligge:
tabella calendario nel database:
id (int) <-- contatore
nome (varchar)
inizio (datetime)
fine (datetime)

la query che lancio è la seguente
Codice:
select * from calendario where '2011-04-20' between inizio and fine

In teoria dovrebbe estrapolarmi tutti i record che hanno una data di inizio minore o uguale a quella specificata (nell'esempio la data di oggi) e una data di fine maggiore o uguale a quella specificata.

Ebbene non funziona ed è da ieri che ci sbatto la testa senza risultati. Ho provato anche così (che poi è la stessa cosa)
Codice:
select * from calendario where '2011-04-20'>=inizio and '2011-04-20'<=fine

naturalmente l'esito è lo stesso. ovviamente i record che hanno una idierna ci sono. Terrei a precisare che sembra che sia il valore inizio che non funziona perché mentre la query:
Codice:
select * from calendario where '2011-04-20'<=fine
mi estrapola un po' di record, questa
Codice:
select * from calendario where '2011-04-20'>=inizio
non mi da alcun record (sebbene ce ne siano)
 
In ritardo :P

scusa il ritardo, ma sono nuova...

Ti faccio notare che i campi data sono di tipo datetime, quindi la procedura è la seguente:
- trasformare la data in unixtime (esistono vari siti che convertono)
- utilizzare la funzione "DATE"

esaempio:
SELECT *
FROM calendario
WHERE DATE( inizio ) >= FROM_UNIXTIME( '00000000000' ) AND
DATE( fine) <= FROM_UNIXTIME( '00000000000' )

con mysql funziona.
Fammi sapere...
 
No

Non credo ci sia bisogno di fare una cosa del genere...

Prova così:

select * from calendario where fine >= '20-04-2011'

Sarà un problema di formato della data e metti sempre prima il nome del campo ovvero:

fine > 'tua_data' e NON 'tua_data' > fine
 

Discussioni simili