Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Data di nascita ed età

    Salve,
    ho un problema che forse avrete già affrontato. In un database SQL ho una tabella (tblUtenti) con l'anagrafica degli utenti, con un campo "Nascita" di tipo data in cui memorizzo la data di nascita.
    Da un'altra parte però ho un filtro che deve selezionare degli utenti in base all'età.
    Il filtro fa sempre un "WHERE Anni BETWEEN 10 AND 30" ad esempio.
    Io pensavo che la soluzione potrebbe essere creare una vista di tblUtenti (v_Utenti) replicando tutti i campi dell'anagrafica che mi servono, più un campo "Anni" che sarebbe dinamicamente calcolato tra la data di nascita della tblUtenti e la data di oggi.
    E' una soluzione praticabile? Se si, come si fa a calcolare sto valore?
    Grazie mille.
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Testato sul classico db Northwind:

    codice:
      SELECT birthdate, 
        Datediff(Year, birthdate, getdate())
        - CASE WHEN
          Dateadd(Year, Datediff(Year, birthdate, getdate()), 
                  birthdate) > getdate()
             THEN 1 ELSE 0
        END AS Anni
      FROM employees
    Il risultato lo vedi nella tabella sottostante.

    Nota che lo script tiene conto anche del giorno e mese di nascita, rispetto all'anno,
    Se usassi solo il primo enunciato senza il CASE:
    Datediff(Year, birthdate, getdate())
    vedresti che il 1° record restituirebbe 62 anni, invece di 61, e sarebbe sbagliato perchè l'impiegato, essendo nato a dicembre, non ha ancora compiuto gli anni.

    codice:
    birthdate		anni
    08/12/1948	61
    19/02/1952	58
    30/08/1963	46
    19/09/1937	72
    04/03/1955	55
    02/07/1963	46
    29/05/1960	49
    09/01/1958	52
    27/01/1966	44


  4. #4
    @freezone

    Ciao,

    come indicato nel regolamento, va specificata la piattaforma usata per il database nel titolo ... ma se non lo si fa andrebbe per lo meno specificata nel corpo del messaggio!

    Indicare come piattaforma "SQL" equivale a non dire nulla in quanto SQL significa http://it.wikipedia.org/wiki/SQL

    Gentilmente, posta il nome della piattaforma utilizzata per il database cosi da poter correggere il titolo mettendo a norma il thread.

    Grazie
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.