Wie kann ich im SQL Zahlen ausrechnen lassen?
Hallo,
wenn ich im SQL beispielsweise eine Tabelle habe wo Name, Vorname und Jahrgang steht, kann ich irgendwie das alter (z.B 2000 = 18 )ausrechnen lassen und dann auch anzeigen lassen?
Ich verwende Sqliteman.
5 Antworten
SQL ist eine relationale Datenbank. Bestimmt kannst du per Script bei einem Select Befehl auch Rechenbefehle verwenden aber das wäre hier vermutlich zu umständlich.
Jahrgang ist natürlich zu ungenau da du den Monat und Tag mit einbeziehen musst um das Alter zu errechnen.
SQL ist keine Datenbank, SQL ist eine Datenbanksprache, wie der name schon sagt.
Ich weiß jetzt nicht, wie die Datumsfunktion in sqlite heißt, aber z.B. bei MS SQL-Server würde es so gehen:
SELECT Name, Vorname, YEAR(GETDATE()) - Geburtsjahr AS Alter
FROM Personen
Also einfach das aktuelle Jahr minus das Geburtsjahr rechnen lassen.
Aus einem Jahrgang kannst Du das genaue Alter nicht errechnen. Das kannst Du nur, wenn Du das Geburtsdatum kennst.
Ansonsten läuft es darauf hinaus, die aktuelle Jahreszahl per YEAR zu ermitteln und davon die Jahreszahl des Jahrgangs abzuzuiehen. Diesen Wert kannst Du dann zurückgeben.
Das mag sein. Dennoch kannst Du nur mit dem Jahrgang nicht das genaue Alter einer Person berechnen, sondern nur, wie alt die Person mit Sicherheit am 31.12. diesen Jahres ist.
Das dürfe doch kein problem darstellen wenn du den SQL Syntax eingeben kannst. Zum beistpel Now()-Datum frag mich nicht wie das in Sqliteman geht.
Jetzt habe ich herausgefunden, dass wenn ich diese Syntax angebe: SELECT Nachname, Vorname, Jahrgang - 2018 AS "Alter" FROM table;
Kommen zwar Nachname, Vorname und Alter aber das alter wird dann in -20 angegeben. Ist es nun möglich das "-" vor der Zahl entfernen zu lassen?
Ja, indem man es halt richtig herum macht....
"2018 - Jahrgang" anstatt "Jahrgang - 2018".
Und was machst Du dann 2019? Willst Du dann jedes Jahr den Code anpassen?
Schreib mal hin "YEAR(GETDATE()) - Jahrgang" und schau, was rauskommt.
Abfrage Fehler; no such function: GETDATE Unable to execute statement
SELECT YEAR(GETDATE()) - Jahrgang AS "Alter" FROM schueler;
Ich habe eine Übungstabelle, wo nur der Jahrgang steht...