Newsgroup: it.comp.www.php
Titolo: Date in ua query

Utilizzo MySQL,
ho un piccolo problemino con le date in una query.
In una tabella ho il campo datanotizia dove queste date sono memorizzate nel
formato aaaa-mm-gg .
Con una query dovrei selezionare tutti i record nel cui campo datanotizia
hanno lo stesso mese e lo stesso anno indipendentemente dal giorno.
Ho fatto diversi tentativi senza successo.
Ultimo in ordine di tempo:
$query = "SELECT notiziedalcomune.ID, notiziedalcomune.datanotizia,
notiziedalcomune.titolo FROM notiziedalcomune WHERE
notiziedalcomune.datanotizia)= '$AM-%' ;";
dove $AM  = "2004-12";
Come va scritto WHERE (((notizia.datanotizia)= $AM & '%'     ????
Grazie a che vorr� aiutarmi.
Saluti
Leo

La butto lì...
E se facessi:
 $AMStart = 2004-12-01;
 $AMEnd = 2004-12-31;
$query = "SELECT notiziedalcomune.ID, notiziedalcomune.datanotizia,
notiziedalcomune.titolo FROM notiziedalcomune WHERE
notiziedalcomune.datanotizia >= '$AMStart' AND
notiziedalcomune.datanotizia <= '$AMEnd' ";
Potrebbe funzionare?

 formato aaaa-mm-gg .
Sono date (formato DATETIME, TIMESTAMP, ...) o stringhe ?
Se sono date 'vere', il fatto che tu dica siano nel formato aaaa-mm-gg ï¿œ
solo il modo in cui te le fa vedere il client sql.
saluti,
M.

 notiziedalcomune.datanotizia)= '$AM-%' ;";
provato con
...WHERE notiziedalcomune.datanotizia LIKE '$AM-%'
Ma non so se il campo data di MySQl supporta LIKE, prova!
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
cd /local/pub && more beer > /dev/mouth

 Leo
se provassi a convertire il tutto in stringa e prenderne una parte?
select [quel che vuoi] from [tabella] where
substr(datanotizia , 1, 7) = '2004-12'
ciao

 
non sono praticissimo di mysql ma credo che sei hai memorizzato il campo
nella forma data devi trasformare la tua stringa in una data con la
funzione di mysql str_to_date
SELECT notiziedalcomune.ID, notiziedalcomune.datanotizia,
notiziedalcomune.titolo FROM notiziedalcomune WHERE
notiziedalcomune.datanotizia) = STR_TO_DATE('12,2009',%m,%Y');

 notiziedalcomune.datanotizia) = STR_TO_DATE('12,2009',%m,%Y');
Se il campo ï¿œ di tipo datetime o timestamp si possono usare le funzioni
Year(campo_data) e Month(campo_data)
saluti,
M.


Provato e da:
server version for the right syntax to use near ') like 2004-12-%' at line 1
Il campo � di tipo DATE
Ciao
Leo


Damo DATE
Ciao
Leo

 substr(datanotizia , 1, 7) = '2004-12'
A questo punto varrebbe fare 3 campi GG MM AAAA e releggere e filtrare i 
dati di questi.
Ciao
Leo


Andiamo per gradi:
$query = "SELECT notiziedalcomune.ID, notiziedalcomune.datanotizia, 
notiziedalcomune.titolo FROM notiziedalcomune WHERE 
(((notiziedalcomune.datanotizia) Like '2004-12-07' ));";
funziona e mi fa vedere tutti i record con il campo data che contiene 
'2004-12-07'
Ciao
Leo

 Il campo ï¿œ di tipo DATE
Allora usa MONTH() e YEAR()
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
A committee is a life form with six or more legs and no brain.

 '2004-12-07'
E ok, prova con la query
$query = "SELECT notiziedalcomune.ID, notiziedalcomune.datanotizia,
notiziedalcomune.titolo FROM notiziedalcomune WHERE
notiziedalcomune.datanotizia LIKE '2004-12-%' ";
(perche' tutte quelle parentesi?)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Everybody wants to go to heaven, but nobody wants to die.


Questa mi � stata inviata da free.it.comp.database.mysql
WHERE year(datanotizia)=2004 and month(datanotizia)=12
e funziona.
Comunque grazie, alla prossima
Saluti
Leo