In TSQL würde, wie Sie bei der Konvertierung von einem int-Datentyp in einen datetime und geben Sie das Alter?
Was wäre das sql für die folgenden,
Ich habe ein Geburtsdatum in ein int-Feld,
ie JJJJMMTT = 19600518
Ich würde gerne das Alter.
InformationsquelleAutor Paul Rowland | 2009-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keiner der anderen Antworten sind eigentlich die Berechnung Alter. Sie sind der Berechnung der Anzahl der Jahre Grenzen und nicht an den Geburtstag berücksichtigt.
Zum berechnen des Alters, die Sie brauchen, um etwas wie das hier tun:
Ich Liebe Sie. Das ist alles.
InformationsquelleAutor LukeH
Meisten anderen Antworten sind nicht Berechnung der Alters - nur ganze Jahre (z.B. 1 Jan 2009 ist "Jahr" nach Dez 31 2008). Also, wenn Sie die meisten der Berechnungen auf dieser Seite, senden Sie ein Falsches Alter für die Hälfte des Jahres im Durchschnitt. Luke ist die einzige person, die gesehen hat, dieser aber seine Antwort scheint mir zu kompliziert - es gibt einen einfacheren Weg:
(ANMERKUNG: Dank geht an "Lernen" für einen tollen Fang auf meine ursprüngliche Algorithmus - das ist eine Version, dass Verwendungen, von Stunden anstelle von Tagen)
Weil die Rundung ist hier sehr fein, dies ist fast vollkommen richtig, für jeden Tag eines jeden Jahres. Die Ausnahmen sind so gebogen, dass Sie fast lustig: jedes vierte Jahr im Alter wieder ein Jahr zu jung, wenn wir A) Fragen für die Zeit vor 6:00 UHR, B) über die person, die Geburtstag und C) Ihren Geburtstag nach 28. Februar. Natürlich, je nachdem, Wann jemand geboren wurde, könnte dies 'technisch' richtig! In meiner Einstellung, das ist ein durchaus akzeptabler Kompromiss.
Hier ist eine Schleife, die Drucke aus Mittelalter zu zeigen, dass dies funktioniert.
Schließlich, dies ist die version, die auch konvertieren Pauls integer Datum ein echtes Datum:
Mein code unten funktioniert jetzt, ich vergaß zu Variablen deklarieren. @d sollte @datetoday. Trotzdem, für eine einfachere Logik nach Alter Berechnung Ecke Fall, werfen Sie einen Blick auf Lukas ' Antwort.
InformationsquelleAutor Mark Brittingham
aber natürlich.
InformationsquelleAutor jrcs3
Alter in Jahren :
Mark: Das ist die Anzahl von Jahren zwischen dem Geburtsdatum und der heute (aka Alter). Wo hast du finden Sie alles rund um Jan 1?
Lernen: Er hat Recht. Lesen Sie die Dokumentation für DATEDIFF sorgfältig
Mark : Sie sind richtig. die Grenze ist implizit Dec31 in meiner Antwort. Ich werde ändern Sie die Antwort, um es zu korrigieren. danke!
Danke ebenso, zu Lernen, für den Hinweis, dass meine Antwort hatte ein Geburtsdatum Problem. Ich habe meinen code für mehrere Jahre, aber mit deiner Beobachtung als prod, habe ich nun aktualisiert, es zu verwenden, der Ansatz, den ich weiter unten beschreiben.
InformationsquelleAutor Learning
InformationsquelleAutor Michael Buen
Hier ist ein one-liner Weg, es zu tun:
Aber Vorsicht! Diese stützt sich auf die T-SQL, und wahrscheinlich funktioniert nicht in anderen SQL-Umgebungen.
Bitte beachten Sie, dass der "Stil" von 112, ist einfach die "ISO" - Datum, format JJJJMMTT. (Etwas, was ich in einigen KONVERTIEREN - Dokumentation).
Auch dies beantwortet nicht die Frage - er verlangt für das Alter!
InformationsquelleAutor Shalom Craimer
Dies ist ein Grund, warum Sie sollten NICHT immer speichern Daten als etwas, außer einem datetime-Datentyp. Die beste Lösung ist, ändern Sie Ihren Datentyp und konvertieren Sie alle Termine einmal (wäre nicht überrascht, wenn es nur wenige ungültige diejenigen die es entweder). dann werden Sie nie zu tun haben, diese Problemumgehungen wieder.
InformationsquelleAutor HLGEM
Ich arbeitete es aus und bekam gleich als @ - Learning
NB. Ich brauchte die IsDate-wie auch gab es einige ungültige Daten in die Daten.
Bearbeiten. Hier ist ein Artikel aus SQLServerCentral über die Berechnung des Alters.
InformationsquelleAutor Paul Rowland