11 messaggi dal 02 agosto 2015
Ciao a tutti,

Mi trovo un problema che non riesco ad risolvere.

Devo fare una query di ricerca in un intervallo di date

Farò qualche esempio di ipotetici dati registrati:
IDA  DATA         OPERAIO  Matricola
6318  29/08/2018   65  52867868
6318  22/08/2018   8  52867868
6318  23/07/2018   22  52867868
6318  18/05/2018  68  52867868


Nella Tabella STRUMENTI ho la matricola dello strumento e la data in cui viene dato in carico
lo strumento e ID OPERAIO che lo prende in carico, dovendo sapere nella data 21/08/2018 chi aveva
in carico lo strumento, come posso costruire la query?
Se provo con data = o < di 21/08/2018 mi estrae sia il 22/08/2018 che il 18/05/2018 che il 23/07/2018
se provo con data = o > di 21/08/2012 mi estrae sia il 22/08/2018 che il 29/08/2018

a me serve sapere chi in quella determinata data aveva in carico lo strumento.


Grazie mille a chi mi può aiutare
Antonio
Modificato da alessio65 il 06 settembre 2018 18.20 -
110 messaggi dal 04 settembre 2010
Ciao

Un caso tipico di utilizzo dell'operatore BETWEEN è per effettuare ricerche all'interno di intervalli di date. Ad esempio:

SELECT id, cliente, spesa
FROM ordini
WHERE data_acquisto BETWEEN '2014-01-01 00:00:00' AND '2014-12-31 23:59:59'

Ciao
11 messaggi dal 02 agosto 2015
Grazie per aver aver risposto, ma l'operatore Between non risolve il mio caso perchè non
ho un intervallo di date tra cui ricercare i dati, ma una data ben precisa.
Stavo pensando che per soluzionare devo obbligatoriamente aggiungere un secondo campo di fine
assegnazione che automaticamente viene impostato alla data di inizio, della nuova assegnazione, meno un giorno. Cioè se la nuova assegazione avviene il 28/02/2018 la vecchia termina il 27/02/2018.
Così potrei eseguire una ricerca con
DATAINIZIO = or < MIADATA AND DATAFINE = or > MIADATA
110 messaggi dal 04 settembre 2010
Lo stesso campo data lo puoi filtrare col beetwen e ti carica i dati in base all'intervallo di date
11 messaggi dal 02 agosto 2015
Scusami, ma voglio capire bene perchè probabilmente mi sfugge qualche cosa.
Io come ricerca ho una data ben precisa non ho un intervallo tra due date, devo estrarre IDOPERAIO che in un giorno specifico ha in carico una apparato quindi non posso usare BETWEEN, però forse mi sbaglio io.
110 messaggi dal 04 settembre 2010
Il beetwen si usa sia per un intervallo di date, oppure per singola data, quindi basta mettere dopo il beetwen la data che ti interessa e dopo End metti la stessa data.
Il metodo estrae i dati che si trovano all'interno delle 2 date, se la data è uguale estrae i record riferiti a quella sola data.
Se vuoi posta la query che te la correggo
Modificato da Mau67 il 07 settembre 2018 18.34 -
Modificato da Mau67 il 07 settembre 2018 18.39 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Credo che il BETWEEN in questo caso non funzioni, perché per ottenere il risultato bisogna comparare le date su vari record.
Se ho capito bene, Alessio ha una situazione del genere:
Nome  Data
Mario 5/9/2018
Luigi 7/9/2018


Lui vuol sapere chi aveva in carico un'apparecchiatura il 6/9/2018. In questo caso è Mario perché Luigi l'ha presa in carico solo il giorno dopo, il 7 settembre.

In questo caso userei questa query (basta prendere il primo record ordinato per data decrescente che sia precedente o uguale alla data voluta).
SELECT TOP 1 * FROM Tabella WHERE Data <= '2018-09-06' ORDER BY Data DESC

Enjoy learning and just keep making
11 messaggi dal 02 agosto 2015
BrightSoul non avevo pensato ad estrarre solo la prima occorrenza che poi è quella che mi serve, credo che sia la mia soluzione, comunque faccio delle prove e vi faccio sapere.
Nel frattempo grazie a tutti.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.