PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] Aktuelles Datum abfragen und vergleichen



Overlord04
26-11-2004, 14:00
Hi,

ich stehe vor einem Problem, was ich auch durch Suchen in google nicht gelöst bekommen habe. Die Problemstellung:

Ich möchte Datensätze so filtern, dass nur die angezeigt werden, die nicht älter als 2 Jahre sind. Sprich: Ich muss an das aktuelle Datum ran und dann dort 2 Jahre subtrahieren und dann mit der Datumsspalte vergleichen.
Nur wie bekomme ich das hin ?

Nicht nur, dass ich es irgendwie nicht hinbekomme ans aktuelle Datum zu kommen, sondern dann noch in eine Zahl umwandeln (muss ich doch, oder ? wenn ich damit rechnen will).

Was ich übrigens auch nicht herausgefunden habe ist, wie man bei der Ausgabetabelle einfach noch ne neue Spalte hinzufügen kann.
Habe da schon alles ausprobiert: Insert, add, create - vielleicht an der falschen Stelle mhmm

Ich hoffe jemand kann mir helfen. Danke im Voraus

ExRevel
26-11-2004, 16:25
Hast du vor das rein auf SQL Basis zu machen oder mit Hilfe eines Sprachen-Interfaces, sprich PHP, C++... dann ist das nämlich nicht schwer und schnell getan.

Sonst muss ich leider passen :)

ciao Exi

sticky bit
26-11-2004, 16:43
Welches DBMS?
Bei Oracle (und ich glaube auch bei Postgre bin mir aber nicht ganz sicher) z. B. würdest du mit SYSDATE das aktuelle Datum bekommen, bei MS SQL mit GETDATE(). Da solltest Du halt mal in das Manual deines DBMS schauen.
Bei Oracle z. B. gäbe es dann die Funktion ADD_MONTHS() mit der Du Monate addieren kannst, so dass dein Query dann so aussehen könnte:


SELECT *
FROM table t
WHERE t.date <= ADD_MONTHS(SYSDATE, -24);

Aber auch hier kommt es auf das DBMS an welche funktionen es da gibt oder ob du u. U. sogar einfach eine Anzahl an Sekunden / Tagen mit dem Minus Operator (-) subtrahieren kannst...

P.S.
Was meinst Du mit Ausgabe Tabelle? Das was dir ein SELECT Query zurück liefert?
Probier mal sowas hier das meintest Du vielleicht:


SELECT t.column AS table_column,
'abc' AS string_constant,
123 AS number_constant,
FUNCTION() AS function_lvalue
FROM table t;

Christoph
26-11-2004, 16:48
PostgreSQL kennt die Funktion AGE() um zwei Datümer voneinander abzuziehen (das Ergebnis ist natürlich *kein* Datum). Ob das SQL-Standard ist weiss ich nicht. Das aktuelle Datum bekommt man laut SQL2-Standard mit CURRENT_DAT bzw. CURRENT_TIMESTAMP (merkwürdigerweise *ohne* Funktionsklammern danach).

Overlord04
26-11-2004, 22:05
Also ich benutze die sch... Software IBEASY (muss sie benutzen). Ist reines SQL. Werde mal eure Tipps probieren. Schon mal vielen Dank für eure Antworten :)

Ok... habe jetzt alles getestet, leider springt er nicht drauf an. Das einzige was er zu kennen scheint ist DATE, aber in welchem Zusammenhang das angewendet wird, habe ich noch nicht herausbekommen.

Bis dahin

Gruss :)