Salve a tutti,
io ho seguente problema: spero riusciate a risolvermelo.
Ho una tabella con i seguenti campi:
id int(10)
nome varchar(40)
data_inserimento timestamp
data_schedulazione varchar(40)
Ora concentriamoci solo sui primi 3: io ho creato un modulo di ricerca per cercare delle schede sia per id, sia per nome che data_inserimento. Se non si inserisce nulla e si lancia la ricerca, verranno messi '%' (e l'operatore di ricerca è il like) ad ogni campo e lancio una query simile a:
Codice PHP:
SELECT *
FROM Tabella
WHERE id like '%'
AND nome like '%'
AND date_format(data_inserimento, '%d/%m/%Y') like '%'
e in questo modo funziona egregiamente.
Ugualmente funziona parametrizzando i campi id e nome: i problemi iniziano se parametrizzo il campo data_inserimento con valori tipo gg/mm/aaaa.
Una nota: nel form di ricerca ho fatto in modo da poter scegliere da un menu a tendina se la data_inserimento deve essere < o = o > di una certa data impostata. Se inserisco % allora l'operatore diventa un like; se inserisco una data tipo gg/mm/aaaa allora l'operatore può essere < o = o >.
Codice PHP:
SELECT *
FROM Tabella
WHERE id like '%'
AND nome like '%'
AND date_format(data_inserimento, '%d/%m/%Y') < '08/11/2006'
Il problema è che non funziona correttamente: nonostante la data sia con il giorno sempre a due cifre (gg p.es. 08) mi da dei risultati (anche se sbagliati) solo se lo inserisco ad una cifra (8/11/2006)
Non so come fare: forse perché il campo è di tipo TIMESTAMP? Ho pensato anche di eliminare la funzione date_format e convertire da PHP la data inserita nel formato TIMESTAMP di tipo MYSQL (che so essere diverso da quello Unix) ma non so come si fa.
Facendo manualmente sembra funzionare però:
Codice PHP:
SELECT *
FROM Tabella
WHERE id like '%'
AND nome like '%'
AND data_inserimento) < '2006-11-07 14:59:36'
Qualcuno sa dirmi dei suggerimenti? Una soluzione pulita oppure la funzione per convertire una data in TIMESTAMP MYSQL?
Grazie a tutti