Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034

    SELECT di record con data consecutiva

    Ciao!
    Ho una tabella con un campo data in cui viene inserito il valore di default getdate(). Dovrei selezionare solo i primi 10 record che hanno la data consecutiva più o meno così:

    codice:
    2005-02-04 18:12:59.517
    2005-02-04 18:13:00.250
    2005-02-04 18:13:01.597
    2005-02-04 18:13:02.173
    Come potrei modificare questa query?
    codice:
    SELECT TOP 10 * FROM miatab WHERE ip = '" + IPuser + "' AND......"

  2. #2
    io farei così:

    SELECT TOP 10 * FROM miatab WHERE ip = '" + IPuser + "' ORDER BY Data DESC

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    no, allora mi sono spiegato io male
    devo selezionare i primi 10 ip tra le cui date non sia trascorso più di un giorno: in pratica l'intervallo tra un data e l'altra di questi primi 10 ip non deve superare un giorno (o xx ore)

  4. #4
    Ah, ho capito, è più complesso allora, puoi provare con la funzione DatePart, ad esempio

    codice:
    SELECT     TOP 10 *
    FROM         miaTab
    WHERE(DATEPART(dd, Data)=(SELECT TOP 1 DATEPART(dd, Data)
                               FROM          miaTab)) AND (DATEPART(mm, Data) =
                              (SELECT     TOP 1 DATEPART(mm, Data)
                                FROM          miaTab)) AND (DATEPART(yy, Data) =
                              (SELECT     TOP 1 DATEPART(yy, Data)
                                FROM          miaTab))

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    ma già in questo modo definisco un intervallo che sarebbe in realtà definito da TOP 10 o sbaglio?
    Per impostare un intervallo, ad esempio, di 2 ore?

  6. #6
    con la query precedente ottieni 10 record, se esistono con il giorno uguale a quello del primo record.
    Per le ore si fa ancora più complessa, prova a lavorare ancora con la funzione DatePart, mettendo in AND un'altra condizione del tipo:

    codice:
    ... AND (DATEPART(hh, OrderDate) >=
     (SELECT     TOP 1 DATEPART(hh, Data) FROM         miaTab)) 
    AND (DATEPART(hh, Data) < (SELECT     TOP 1 DATEPART(hh, Data) + 2
     FROM  miaTab))

  7. #7
    Prova ad utilizzare la funzion di sql
    DATEDIFF ( datepart , startdate , enddate )

    Con datepart = hh


    sql = "SELECT TOP 10 * FROM miatab WHERE ip = '" +@IPuser + "' AND DATEDIFF(hh,nomecampodovec'èladata,getdate())<2"


    Spero di essere stato chiaro
    Fammi sapere
    Ciao
    Kalman
    Kalman

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    solo domani potrò testare queste soluzioni, ma
    codice:
    "SELECT TOP 10 * FROM miatab WHERE ip = '" +@IPuser + "' AND DATEDIFF(hh,Data,getdate())<2"
    già così dici che estrae i record nell'ordine che desidero io?
    Ma hh deve restare invariato o posso anche sostituirlo con il giorno dd (nel caso in cui mi interessa confrontare con il giorno) o con l'orario vero e proprio (esempio 13:43)?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.