Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    selezionare range di date

    salve a tutti, ho un db con questi campi: data1 e data2

    io vorrei costruirmi una query che seleziona tutti i prodotti con il quale il range di data passa dalla data odierna, mi spiego:

    data1 = 15/11/2007 e data2 = 10/12/2007
    questo posso selezionarlo perchè oggi è compreso

    data1 = 10/08/2007 e data2 = 15/09/2007
    questo no, non è compreso.

    la logica che avrei progettato potrebbe essere questa:
    tramite dateDiff, calcolo quanti giorni intercorrono da una data all'altra
    diffPrinc=DateDiff("d", #15/11/2007#, #10/12/2007#)
    poi mi faccio la differenza tra la data odierna e quella iniziale, e allo stesso modo con quella finale
    diffIniz=DateDiff("d",#03/12/2007#,#15/11/2007#)
    diffFin=DateDiff("d",#03/12/200#,#10/12/2007#)

    if diffIniz <=0 and diffFin >=0 then
    la data è compresa.

    il problema è che non so come costruirmi la query con questo criterio, sempre che sia quello giusto.

    Grazie, ciao.

  2. #2
    non ho ben capito. nella tabella hai due campi data (dInizio e dFine), e vuoi selezionare quei record che ricomprendono OGGI tra dInizio e dFine?

  3. #3
    Grazie per avermi risposto Optime,
    devo fare proprio come hai detto te, dici che di può fare???

    p.s. prendi in considerazione anche il mio ragionamento.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non ho capito tutta la trafila... controlla semplicemente che la data1 sia <= ad oggi e che la data2 sia >= oggi

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    mannacc!!!!!! ma come mai che i miei post non li capische mai nessuno???
    faccio un'esempio più pratico
    se io ho un albergo, e ho un database di tutti gli alloggi prenotati;

    nome | periodo dal | periodo al | stato
    alloggio1 | 01/12/07 | 05/12/07 | occupato
    alloggio2 | 07/12/07 | 10/12/07 | occupato
    alloggio3 | 15/12/07 | 31/12/07 | occupato
    nella data di oggi (04/12/07), quale alloggio risulta prenotato?

    Questo è quello che ho pensato io:
    codice:
    set connessione = server.createobject("ADODB.Connection")
    connessione.open...
    set recordset = Server.createobject("ADODB.Recordset")
    
    sql = "Select * from alloggi where stato = 'occupato' order by data desc"
    recordset.Open sql, connessione, 3, 3
    
    do while not recordset.eof 
     //calcolo data itinerario
     diffPrinc=DateDiff("d", recordset("periodo dal"),recordset("periodo al")) 
     diffIniz=DateDiff("d",dataOdierna,recordset("periodo dal"))
     diffFin=DateDiff("d",dataOdierna,recordset("periodo al"))
     if diffIniz <= 0 AND diffFin >=0 then
      response.write recordset("nome")
     end if
    recordset.movenext
    loop
    con la logica che ho scritto funziona bene, ma dovrei selezionare tutti i records di un database e poi scrivere quelli che rispecchiano la condizione, ma io vorrei costruirmi un recordset, se è possibile.


    come potrei fare per costruirmi una query???

    Grazie per le risposte, ciao.

  6. #6
    Originariamente inviato da DarioMarco
    mannacc!!!!!! ma come mai che i miei post non li capische mai nessuno???
    al tuo posto mi preoccuperei

    comunque, una select del tipo

    SELECT campi FROM tabella WHERE GetDate()>=DataDal AND GetDate()<=DataAl

    dovrebbe essere sufficiente


  7. #7
    al tuo posto mi preoccuperei
    a quanto pare sono messo abbastanza male.
    cmq, grazie per la query, hai smontato il mio ragionamento di trequarti d'ora di meditazione, ma sono contento lo stesso di avere la soluzione tra le mani.

    ultimo problema:

    il campo periodo dal / al sono settati come campi data.

    sql = "Select * from alloggi where stato = 'occupato' AND [periodo dal] <= "&dataOdierna&" AND [periodo al] >= "&dataOdierna

    purtroppo non funziona, non mi considera la data
    se imposto invece i campi periodo come campi di testo e metto gli apici tra il valore dataOdierna, non mi fa il calcolo maggiore/minore.

    dovrebbe essere una questione di sintassi.

    Grazie, ciao.

  8. #8

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    71
    Puoi fare cosi
    Codice PHP:
    strSql="SELECT * FROM Tabella1 WHERE data1<=Now And data2>=Now" 
    o cosi
    Codice PHP:
    strSql="SELECT * FROM Tabella1 WHERE data1<=#"dataOdierna &"# And data2>=#"dataOdierna &"#" 

  10. #10
    Uso Access 2003

    x Cillita, grazie per il tuo aiuto, ho provato questo:

    strSql="SELECT * FROM alloggi WHERE [periodo dal]<=#"& dataOdierna &"# And [periodo al]>=#"& dataOdierna &"#"

    ma non mi funziona, se metto gli apici, mi esce data/type mismach, impostando nel db i rispettivi campi come campi data.

    Grazie, ciao.

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.