Anmelden

View Full Version : SQL Datumsfrage



TheDevil
31-10-14, 12:49
Hallo *world,

ich habe schon ein wenig gegoogelt aber bisher bin ich bei foglender Frage nicht so richtig
fündig geworden ...
Ich habe heir ein Char Feld (10) mit z. B. folgendem Inhalt '03.10.2014'.
Nun wollte ich alle Datensäte vor einem bestimmten Datum löschen und suche eine Funktion in folgender Form ... where date(feld, format) < 20140930.
Gefunden habe ich dazu nichts und ich habe mich dann mit substring und multiplikation beholfen ... finde ich aber sehr umständlich.

Also : Gibts so was was ich suche ... ?:)

Danke und alle schon mal ein schönes Wochenende

Ralf

Pikachu
31-10-14, 13:05
Wie wärs mit der Funktion DATE() (http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzscadate.htm)?


The following DATE scalar function applied to an EUR string representation of a date:

SELECT DATE('25.12.1988')
FROM SYSIBM.SYSDUMMY1

Results in a date data type with a value of ‘1988-12-25'.

Fuerchau
31-10-14, 14:04
Die SQL-Funktion DATE() erkennt EUR-Format, ISO-Format geht immer.

Die Frage die sich mir stellt:
Ist das Datenbankfeld vom Typ CHAR(10) oder vom Typ DATE?

B.Hauser
01-11-14, 17:21
SQL kann alphanumerische Darstellungen eines Datums in den folgenden Formaten auch ohne explizite Konvertierung erkennen:
1. ISO-Format: 'JJJJ-MM-TT'
2. Europäisches Format: 'TT.MM.JJJJ'
3. USA-Format: 'MM/TT/JJJJ'
4. Zeitmarken-Format mit Trennzeichen: 'JJJJ-MM-TT-HH-MI-SS.MSMSMS'
oder 'JJJJ-MM-TT HH:MI:SS.MSMSMS'
5. Zeitmarken-Format ohne Trennzeichen: 'JJJJMMTTHHMMSS'

Du kannst die Sätze mit einer der folgenden WHERE-Bestimmungen konvertieren:
WHERE yourCharDate >= Date('1.7.2014')

oder
WHERE Date(YourCharDate) >= '2014-07-01'

oder
WHERE Date(YourCharDate) >= '20140701000000'

Birgittta

TheDevil
03-11-14, 10:18
Hallo *all,

vielen Dank für die umfangreichen Antworten.

Gruß von der dänischen Grenze
Ralf

Fuerchau
03-11-14, 11:42
Wobei ein Cast auf ein Dateifeld in der Where-Klausel möglichst vermieden werden sollte, da dann kein Index verwendet werden kann.
(OK, mit (ab V7?) den "berechneten Indizes" soll das dann auch gehen.)