Query con filtro su date

di il
4 risposte

Query con filtro su date

Salve a tutti. Ho una tabella in cui c'è un campo di nome Data (di tipo Datetime) in cui è memorizzata una data senza l'ora (Es. 11/02/2011 0.00.00) e un campo di nome Ora (di tipo varchar(5)) in cui è memorizzata un'ora in formato testo (Es. 09.53).
Quello che vorrei fare è recuperare tutti i record per cui la combinazione di Data e Ora è <= alla data e ora attuali.
Un dettaglio aggiuntivo: se sono le 10:35:20 e l'ora del record è 10:35, vorrei che il record fosse selzionato. (Dico questo perchè mi pare che se i secondi non sono usati vengono posti a 00.)
Spero di essermi spiegata bene.

Grazie in anticipo per l'aiuto.

4 Risposte

  • Re: Query con filtro su date

    Ciao patapatty, bel problema...
    fermo restando che data e ora sarebbero dovute andare in un unico campo di tipo DateTime e cosi ti saresti semplificate le cose.. provo a darti questa soluzione

    nella condizione della query dovresti fare il confronto della data completa (data + ora) in formato DateTime e la data corrente di tipo DateTime che recuperi con la funzione GETDATE().
    Per creare la data completa dovresti:
    1- fare il Cast della data in formato testo e prendere solo la porzione utile "11/02/2011"
    2- concatenarci l'ora che te la trovi già in formato testo
    3- fare il Cast della stringa creata nel tipo DateTime

    dopo di che puoi tranquillamente fare il confronto nella query
  • Re: Query con filtro su date

    Intanto grazie della risposta.

    Ho tenuto separati i campi per 2 motivi:
    - per adeguarmi ad uno standard già esistente nel programma che devo modificare (creato da terze parti)
    - perchè devo far selezionare sepraratamente data e ora dall'utente in una maschera

    Ho risolto così. Può essere una buona idea?
    SELECT IdEvento FROM NTPDiarioEventiPromemoria WHERE (Utente = 'Pinco Pallino' AND CONVERT(datetime, DATEADD(mi, CAST(LEFT(Ora, 2) AS int) * 60 + CAST(RIGHT(Ora, 2) AS int), Data), 120) <= CONVERT(datetime, GETDATE(), 120))
    Ciao
  • Re: Query con filtro su date

    Ciao se funziona è sicuramente una soluzione.
    Cmq se continuarai a mantenere questo db ti conviene implementare il DateTime, altrimenti per le prossime query dovrai gestire complicazioni simili.
  • Re: Query con filtro su date

    Grazie del consiglio.
Devi accedere o registrarti per scrivere nel forum
4 risposte