Visualizzazione dei risultati da 1 a 9 su 9

Discussione: query su tipo "date"

  1. #1

    query su tipo "date"

    ciao a tutti, ho un problema da cui non riesco a venirne a capo nonostante abbia cercato parecchio su internet. in pratica ho una tabella "Impiegati" con nome,cognome, data_nascita (tipo date). devo fare una query in SQL che mi selezioni solo gli impiegati con età inferiore a 30 anni. ovviamente deve calcolarla dal campo data_nascita facendo riferimento alla data attuale del computer.
    ogni aiuto è ben accetto...
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Che database server usi?

    se usi sql server:

    codice:
    SELECT * from impiegati
    where 
    DATEDIFF(year,datanascita,GetDate()) < 30
    in mysql puoi usare sempre la datediff ma credo devi dividere per 365 perchè fa la differenza solo in giorni e non in anni e il now al posto della getdate per la data di sistema

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    18
    questo dovrebbe funzionare su qualsiasi db

    codice:
     select * from impiegati where  (sysdate - data_nascita)/365 < 30
    ciao!!

  4. #4
    innanzitutto grazie per avermi risposto
    utilizzo Access e all'occorrenza Database di OpenOffice (che credo dovrebbe essere piu o meno simile).
    ho provato le vostre soluzioni ma per quelle di Talion mi da un errore di sintassi, mentre invece per quella di wolfwood mi dice che non è possibile caricare i contenuti

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    in access la sintassi è leggermente diversa:


    codice:
    SELECT * from impiegati
    where 
    DATEDIFF("yyyy",datanascita,date())< 30


  6. #6
    purtroppo questa è la soluzione che avevo già trovato in precedenza su internet e non mi funziona, mi dà il solito errore di sintassi...

  7. #7
    che database usi? (quello che ti dà errore)

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Format(Now();"yyyymmdd") ti restituisce un numero 20120903

    per essere piu giovane di 30 anni ( fortunati ) devi essere nato dopo
    il 19820903 la differenza è 300000


    io farei:
    codice:
    SELECT * FROM Impiegati
    WHERE 
    (Format(Now(),"yyyymmdd")-Format([data_nascita],"yyyymmdd"))<300000
    ;
    __________________________________________________ _______
    __________________________________________________ _______

    Ma anche la seconda soluzione di Talion funziona bene su Access

    Se ti da errore di sintassi significa che non usi Access oppure
    lavori nella griglia di progettazione query
    pertanto devi cambiare le "," con ";"



    Facci sapere

  9. #9
    Originariamente inviato da Talion
    in access la sintassi è leggermente diversa:


    codice:
    SELECT * from impiegati
    where 
    DATEDIFF("yyyy",datanascita,date())< 30

    Questa soluzione l'avevo provata su Database di OpenOffice e mi dava errore di sintassi; l'ho appena provata su Access e mi funziona bene
    grazie a tutti

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.