View Full Version : [SQL] Aiutatemi per questa query
stdecden
08-07-2007, 22:24
Nel Database ho piú campi tra i quali
dd -> Giorno
mm -> Mese
yy -> Anno
Ora la domanda!
Come faccio a estrarre quelle tuple che hanno una data superiore o uguale ad una data?
RaouL_BennetH
09-07-2007, 13:18
Perdonami se ti faccio io una domanda anzichè rispondere alla tua..
Ma non puoi creare semplicemente un campo di tipo data ?
Nel Database ho piú campi tra i quali
dd -> Giorno
mm -> Mese
yy -> Anno
Ora la domanda!
Come faccio a estrarre quelle tuple che hanno una data superiore o uguale ad una data?
Con le condizioni dal WHERE... :stordita:
RaouL_BennetH
09-07-2007, 13:44
Con le condizioni dal WHERE... :stordita:
Sarebbe facile per lui se avesse _un_ solo campo di tipo data...
ma se ho capito bene la sua domanda lui ha tre campi nella tabella:
dd=05
mm=07
yy=07
e per esempio li dovrebbe confrontare con un solo campo data che prende da qualche parte tipo: 08/06/07
quindi dovrebbe usare un where (non so come) da confrontare con ogni porzione del campo di tipo data.
Perciò gli chiedevo se non fosse più semplice utilizzare un unico campo di tipo data all'interno del db
stdecden
09-07-2007, 14:03
Grazie per le vostre risposte. Allora é meglio sostituirlo con il tipo "date".
Sarebbe facile per lui se avesse _un_ solo campo di tipo data...
ma se ho capito bene la sua domanda lui ha tre campi nella tabella:
dd=05
mm=07
yy=07
e per esempio li dovrebbe confrontare con un solo campo data che prende da qualche parte tipo: 08/06/07
quindi dovrebbe usare un where (non so come) da confrontare con ogni porzione del campo di tipo data.
Perciò gli chiedevo se non fosse più semplice utilizzare un unico campo di tipo data all'interno del db
Mah... :D Concordo sul fatto che un singolo campo data sia la soluzione migliore, ma non capisco come faccia ad esser difficile confrontare la data 08/06/07 con 05/07/07... :D
Parti a confrontare l'anno, poi il mese ed infine il giorno
Ad esempio per tutte le date precedenti il 09/07/2007
WHERE aa < 2007 OR (aa = 2007 AND mm < 7) OR (aa = 2007 AND mm = 7 AND dd < 7)
Il confronto dovrebbe funzionare sempre ;)
Comunque come già detto, va meglio un campo data...
yorkeiser
09-07-2007, 15:56
Dipende un po' da che DB usi, ma in generale la vedrei così:
where to_char(data,'YYYYMMGG') < (anno || mese || giorno)
dove data è la data con cui fai il confronto e il doppio pipe è l'operatore di concatenazione tra stringhe (la mia è una sintassi che va bene su Oracle). Potresti dover eseguire qualche conversione di formati.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.