PDA

View Full Version : Sql


ezechiele72
07-11-2002, 23:01
Salve a tutti. Qualcuno mi potrebbe scrivere la stringa SQL per visualizzare i record compresi tra due date (ex: dal 01/01/2002 al 01/02/2002)? O come posso raggiungere lo stesso risultato in un altro modo? Grazie

cn73
08-11-2002, 09:10
Niente di + semplice :)

SELECT TUA_DATA FROM TUA_TABELLA WHERE TUA_DATA in ( TO_DATE('01/01/2002','dd/mm/yyyy'),TO_DATE('01/03/2002','dd/mm/yyyy'))

o nel formato data che vuoi se hai anche ad es i minuti e i secondi.

cionci
08-11-2002, 13:14
cn73 : la IN non indica un intervallo, ma è BETWEEN che prende un intervallo...
IN serve per prendere quella data se è uno di quei valori specificati all'interno della IN...

In Access si fa così :

SELECT * FROM Tabella
WHERE Data >= DateValue('11/09/2001') And Data <= DateValue('11/09/2002');

o così (sono equivalenti):

SELECT * FROM Tabella
WHERE Data BETWEEN DateValue('10/09/2001') And DateValue('11/09/2002');

cn73
08-11-2002, 14:21
OPS... giusta osservazione ;) BETWEEN e non IN:

SELECT TUA_DATA FROM TUA_TABELLA WHERE TUA_DATA BETWEEN TO_DATE('01/01/2002','dd/mm/yyyy') AND TO_DATE('01/03/2002','dd/mm/yyyy')

LA funzione dataValue è propria di ACCESS (O VBA), non appartiene alla sintassi SQL. Su un db oracle la tua query darebbe errore...

cionci
08-11-2002, 15:39
Lo so...ma anche TO_DATE è proprietaria :)

ezechiele72
08-11-2002, 20:47
Molto chiari e vi ringrazio...vado a provarla. Mi risolvereste un altro problemino? Non riesco a collegare due campi data (sempre in Access). Il quesito l'ho postato in un'altra discussione con il titolo "Collegare due campi DATA". Grazie1000.

cn73
08-11-2002, 21:21
Originariamente inviato da cionci
[B]Lo so...ma anche TO_DATE è proprietaria :)

DI chi? :) Non mi pare, mi sembra di ricordare che sia una istruzione SQL...Non funziona con ACCESS?

cionci
08-11-2002, 21:40
Originariamente inviato da cn73
[B]DI chi? :) Non mi pare, mi sembra di ricordare che sia una istruzione SQL...Non funziona con ACCESS?
No...e nemmeno con MySQL...
Soitamente queste funzioni di formattazione/conversione delle date sono proprietarie per ogni DBMS...

ezechiele72
09-11-2002, 01:25
SELECT Sum([tabella].[nomecampo]) AS [Somma nomecampo]
FROM tabella
WHERE [Data] Between Datevalue('01/08/2002') And Datevalue('15/08/2002');

Perché mi comprende, per esempio, anche il 07/09/2002? Considera solo il giorno?!!?

cionci
09-11-2002, 10:20
Ma sei sicuro ?!?!? Ho provato con i tuoi stessi limiti mettendo anche 07/09/2002 nel db di prova e ame mi ritorna solo quelli compresi nell'intervallo...

Ma il campo sei sicuro che sia di tio Data/ora ?

cn73
09-11-2002, 11:33
TO_DATE è una funzione SQL...come TO_CHAR ad es...come al solito Microsoft deve fare di testa sua :D

Starno che non funzioni quella query :confused:

cionci
09-11-2002, 11:45
Sicuro che sia SQL standard ? Magari è SQL di Oracle...

cn73
09-11-2002, 13:36
Sicuro...mmm...sul mio manuale di SQL standard è così. Mi sembra strano che SQL standard non contempli funzioni di formattazione delle date, essendo un tipo base.

cionci
09-11-2002, 13:42
Ho fatto una ricerca, ma l'ho sempre trovato associato ad Oracle o PostgreSQL...

Vabbè...cambia poco :)

cn73
09-11-2002, 18:08
Originariamente inviato da cionci
[B]Ho fatto una ricerca, ma l'ho sempre trovato associato ad Oracle o PostgreSQL...

Vabbè...cambia poco :)

Infatti! :D