Italian Query con date

Discussion in 'Italian Forum' started by micro, Nov 9, 2008.

  1. micro

    micro Well-Known Member Licensed User

    Salve ragazzi,
    mi rivolgo agli esperti dei db e delle query.
    Diciamo che non ho grossi problemi almeno sino ad ora e per averli usati da poco (i db) con sqlite devo dire che sono abbastanza soddisfatto.
    Per le ricerche semplici o a più campi non ho problemi però non saprei come fare delle ricerche tra due date.
    In pratica vorrei trovare tutti i record di un db confrontando la data tra le due di riferimento.

    Grazie a tutti
     
  2. giannimaione

    giannimaione Well-Known Member Licensed User

    Ciao Micro,

    dovresti dire in che modo/formato ai memorizzato la data.
    molto probabilmente se hai utilizzato la forma AAAAMMGG, non dovresti aver problemi:
    nella query devi indicare le date nello stesso formato AAAAMMGG

    In ogni caso prova a leggere la documentazione qui SQLite Query Language: Date And Time Functions

    ciao,
     
    Last edited: Nov 9, 2008
  3. micro

    micro Well-Known Member Licensed User

    No gianni,
    la data la uso nel formato classico gg/mm/aaaa formattata come stringa e memorizzata come tale.

    Grazie per la disponibilità.
     
  4. maXim

    maXim Active Member Licensed User

    Ciao micro,

    certo che utilizzando la data come una stringa e per lo più formattata secondo lo standard italiano la "cosa" si complica un poco ma è possibile "aggirare" l'ostacolo come ad esempio è mostrato qui sotto:


    ' si ammette di avere in una tabella ("TabMov") un campo
    ' data di nome "DateIt" nel formato stringa gg/mm/aaaa...

    ' si desidera eseguire una query che mostri tutti i record
    ' dove "DateIt" è maggiore del "15/07/2008" ("DateStart")
    ' e minore di "12/09/2008" ("DateEnd")...

    ' la select di estrapolazione dei dati potrebbe essere la seguente:


    xSQL = "SELECT * FROM TabMov WHERE (((SUBSTR(DateIt, 7, 4) || SUBSTR(DateIt, 4, 2) || SUBSTR(DateIt, 1, 2)) >= '20080715') AND ((SUBSTR(DateIt, 7, 4) || SUBSTR(DateIt, 4, 2) || SUBSTR(DateIt, 1, 2)) <= '20080912'))"

    ' oppure:

    DateStart = [data in formato italiano per inizio confronto]
    ' qualsiasi stringa o variabile che contenga una data nel formato gg/mm/aaaa
    DateEnd = [data in formato italiano per fine confronto] ' qualsiasi stringa o variabile che contenga una data nel formato gg/mm/aaaa
    q_Date_Start = SubString(DateStart, 6, 4) & SubString(DateStart, 3, 2) & SubString(DateStart, 0, 2) ' aaaammgg
    q_Date_End = SubString(DateEnd, 6, 4) & SubString(DateEnd, 3, 2) & SubString(DateEnd, 0, 2) ' aaaammgg
    xSQL = "SELECT * FROM TabMov WHERE (((SUBSTR(DateIt, 7, 4) || SUBSTR(DateIt, 4, 2) || SUBSTR(DateIt, 1, 2)) >= '" & q_Date_Start & "') AND ((SUBSTR(DateIt, 7, 4) || SUBSTR(DateIt, 4, 2) || SUBSTR(DateIt, 1, 2)) <= '" & q_Date_End & "'))"


    Comunque ti consiglio, anche per una maggior velocità di elaborazione, di convertire i campi delle tabelle di database che utilizzi come date nel formato timestring.

    Saluti,

    Massimo
     
    Last edited: Aug 2, 2013
  5. micro

    micro Well-Known Member Licensed User

    Grazie massimo,
    gentile come sempre e come tutti gli altri del resto.
    Ho voluto memorizzare la data come stringa un pò per inesperienza :) e perchè la necessità (anche se remota) di trovare record tra due date di riferimento mi è sorta adesso.

    Ancora grazie.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice