Pagina 1 di 1

tipo DATE in mysql

Inviato: dom 27 ago 2006, 15:03
da tgmx
Ciao Ragazzi,

sto configurando un database MYSQL ed in una tabella c'è una colonna con tipo di dato "DATE" (per visualizzare le date nel formato 2006-5-28 ) .
Il problema è accedere al mese di ogni data senza implementare niente in c++, solamente tramite un select del tipo:

Codice: Seleziona tutto

select * from tabella where data.mese = 2
cioè voglio selezionare tutte le righe in cui il campo della data fa riferimento a febbraio.
Ovviamente il select che ho scritto non funziona altrimenti non avrei aperto questo topic !!! :D

Grazie!!!

Inviato: dom 27 ago 2006, 15:38
da bbg5ne
io di solito uso un campo int nel quale salvo il timestamp che creo con php....
però forse nel tuo caso potrebbe essere + comodo creare un campo per i giorni, uno per i mesi e uno per gli anni anche se, mi sa che non puoi modificare la struttura, in questo caso dovresti utilizzare una funzione che tokenizza la data!!!
in pratica è una funziona che fa il parsing del campo e quando trova un - ti restituisce tutto quello che ci sta prima o dopo, fino al separatore successivo, in base a come la sviluppi!!!
se non sono stato abbastanza chiaro fammi sapere...
;)

Inviato: dom 27 ago 2006, 15:55
da dapuzz
provato già con MONTH(data) ='2' ?

Re: tipo DATE in mysql

Inviato: dom 27 ago 2006, 19:48
da IceSlack
tgmx ha scritto:Ciao Ragazzi,

sto configurando un database MYSQL ed in una tabella c'è una colonna con tipo di dato "DATE" (per visualizzare le date nel formato 2006-5-28 ) .
Il problema è accedere al mese di ogni data senza implementare niente in c++, solamente tramite un select del tipo:

Codice: Seleziona tutto

select * from tabella where data.mese = 2
cioè voglio selezionare tutte le righe in cui il campo della data fa riferimento a febbraio.
Ovviamente il select che ho scritto non funziona altrimenti non avrei aperto questo topic !!! :D

Grazie!!!
prova

Codice: Seleziona tutto

select * from tabella where data >= '2006-2-01' AND data <= '2006-2-30';

Inviato: dom 27 ago 2006, 22:18
da gnubit
credo che funzioni anche
SELECT * FROM tabella WHERE date LIKE '____-02-__'

oppure
SELECT * FROM tabella WHERE SUBSTRING(data,6,2) = '02'

Mi pare che la data sia paddata comunque a 10 caratteri AAAA-MM-GG.
Se così è entrambe dovrebbero funzionare.

Inviato: dom 27 ago 2006, 22:27
da dapuzz
si, insomma ci sono tanti modi, comunque come già detto la soluzione più comoda è proprio MONTH(data)=2
Per le altre info puoi sempre vedere sulla documentazione :P http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html

Inviato: lun 28 ago 2006, 11:03
da tgmx
Grazie Ragazzi !!!

mi avete dato delle ottime soluzioni.

Forse userò quella di DAPUZZ:

Codice: Seleziona tutto

MONTH(data) ='2'
comunque le ho provate tutte e funzionano perfettamente anzi nelle altre ho trovato soluzioni ad altri piccoli problemi che si erano presentati sullo stesso database :)