Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    SQL aiuto con query su date

    Ho bisogno di aiuto su una query in sql: ho una tabella con una serie di record legati tra loro da un campo IDtesta che fa riferimento ad un'altra tabella.
    Da questa tabella di righe dovrei estrarre la data "più bassa" e la data "più alta" tra tutte le righe riferite a una testa specifica, e la differenza in giorni tra queste due date.
    Ho scritto una cosa così pensando che andasse bene: min e max li pesca giusti ma mi sembra che non venga calcolata la differenza....
    SELECT Min(orainizio) as datapartenza, Max(orafine) as dataarrivo, (datediff("d",Max(orafine),Min(orainizio))+1) as ngiorni FROM [tbl_righe_date] WHERE IDtesta = 361

    (il +1 nel calcolo della differenza mi serve perchè devo considerare UN giorno anche quando datapartenza e dataarrivo sono uguali)

    datapartenza e dataarrivo sono campi datetime

    Chi mi sfanga perfavore?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    up
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    SELECT tbl_righe_date.orainizio AS datapartenza, tbl_righe_date.orafine AS dataarrivo, tbl_righe_date!orafine-tbl_righe_date!orainizio+1 AS ngiorni
    FROM tbl_righe_date
    WHERE (((tbl_righe_date.IDtesta)=361));

  4. #4
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    cioè vuoi dirmi che se faccio una data meno un'altra, la differenza viene già espressa in giorni???
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #5
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    provato: il risultato della differenza diretta di due date è un'altra data (com'era logico aspettarsi, stupido che non sono altro)

    a me il risultato serve espresso in giorni, ad esempio i risultati che mi aspetto di ottenere sono questi:
    codice:
    datapartenza           dataarrivo           ngiorni
    25/04/2011 09:00     25/04/2011 16:00             1
    25/04/2011 09:00     26/04/2011 05:00             2
    25/04/2011 09:00     26/04/2011 17:00             2
    25/04/2011 09:00     27/04/2011 05:00             3
    ...
    se faccio la differenza tra le date per sottrazione diretta o col datediff entra in gioco l'orario e mi falsa i risultati... credo che dovrebbe guardare solo la parte di data per darmi i risultati che cerco
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    datediff("d",Max(orafine),Min(orainizio))+1
    è sbagliato

    datediff("d",Min(orainizio),Max(orafine))+1
    è giusto

    Vado a scuoiare quello che ha scritto questo
    Function DiffADate(theDate)
    DiffADate = "Giorni trascorsi fino ad oggi: " & DateDiff("d", Now, theDate)
    End Function
    nell'help del vbscript, se non è già morto con quello che gli ho augurato nelle ultime ore
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    11/5/2011 h 18.00 meno 10/5/2011 h 06.00 sono 1 giorno e 12 ore
    pertanto la differenza è 1,5 ( giorni espresso in numeri decimali )


    per il tuo scopo penso che devi arrotondare alla parte intera


    Devi impostare il formato celle in numerico e non in DataOra


    Saluti

  8. #8
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    datediff("d","10/05/2011 06:00", "11/05/2011 18:00")+1
    a me restituisce 2 (come mi aspetto)
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    @nman
    Il formato Date/Time va benissimo, è fatto apposta.
    Cambiarlo vuol dire stravolgere l'intera applicazione!
    Senza considerare che il DB potrebbe non essere di mia proprietà...

    @supermac
    Non devi scuoiare nessuno.

    Se non vuoi tener conto della 'parte' ora della data devi usare la funzione Format per prendere in considerazione solo la data:

    codice:
    SELECT 
      Format(orainizio, 'dd/mm/yyyy') AS DataPartenza
    , Format(orafine, 'dd/mm/yyyy') AS DataArrivo
    , Datediff('d', Format(orainizio, 'dd/mm/yyyy'), Format(orafine, 'dd/mm/yyyy')) +1  AS ngiorni
    
    FROM 
      tbl_righe_date
    ed ottengo questo risultato:

    codice:
    DataPartenza	DataArrivo	ngiorni
    25/04/2011	25/04/2011	1	
    25/04/2011	26/04/2011	2	
    25/04/2011	26/04/2011	2	
    25/04/2011	27/04/2011	3

  10. #10
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    tenchiu e lot
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.