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
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.
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');
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...
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.
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?
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?!!?
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 ?
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:
Sicuro che sia SQL standard ? Magari è SQL di Oracle...
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.
Ho fatto una ricerca, ma l'ho sempre trovato associato ad Oracle o PostgreSQL...
Vabbè...cambia poco :)
Originariamente inviato da cionci
[B]Ho fatto una ricerca, ma l'ho sempre trovato associato ad Oracle o PostgreSQL...
Vabbè...cambia poco :)
Infatti! :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.