Seite 1 von 1

Jahr aus Datum ermitteln

Verfasst: Di, 28.03.2006 12:14
von eric
Hallo,
ich möchte aus einer csv-basierten Datenbank, die u.a. eine Spalte Datum im Format tt.mm.jjjj enthält, zum einem das Jahr dieses Eintrages ermitteln und in einer sparaten Spalten darstellen. Zum Anderen möchte ich die Differenz zum aktuellen Jahr in einer Spalter darstellen.
Ich ein SELECT Statement für den ersten Teilschritt zusammengestellt, erhalte aber leider keine Inhalte.
SELECT "Datum", RIGHT ( "Datum", 4 ) AS "Jahr" FROM "spg" "spg"
Hat Jemand eine Idee?
Freue mich über eine Hilfe.

Gruß Eric

Verfasst: Di, 28.03.2006 15:35
von pmoegenb
Hallo Eric,

probier mal folgendes:

Code: Alles auswählen

SELECT "Datum", Year("Datum") AS "Jahr" FROM "spg" "spg" 

Verfasst: Mi, 29.03.2006 08:15
von eric
Hallo Peter,
vielen Dank für die Hilfe.
Hatte ich auch probiert, jedoch mit dem gleichen Ergebnis. Es wird kein Inhalt angezeigt. Offenbar werden weder String- noch Datumsoperationen ausgeführt, obwohl kein Fehler gemeldet wird. Mir ist noch nicht klar in welchem Format die Felder beim Import des csv-Files verwaltet werden.
Schade.

Gruß Eric

Verfasst: Mi, 29.03.2006 08:48
von pmoegenb
eric hat geschrieben:Hallo Peter,
vielen Dank für die Hilfe.
Hatte ich auch probiert, jedoch mit dem gleichen Ergebnis. Es wird kein Inhalt angezeigt. Offenbar werden weder String- noch Datumsoperationen ausgeführt, obwohl kein Fehler gemeldet wird. Mir ist noch nicht klar in welchem Format die Felder beim Import des csv-Files verwaltet werden.
Schade.
Hallo Eric,

wie wurde die csv-File importiert. Viele sind der Ansicht, dass wenn sie eine csv-Datei oder txt-Datei als Datenquelle angemeldet haben und daraus eine odb-Datei resultiert, dass die Datensätze importiert wurden.

Dem ist allerdings nicht so, es wurde lediglich eine Verbindungsbeschreibung zur csv- oder txt-Datei hergestellt.

Wenn der Import tatsächlich in eine HSQLDB-Datenbank erfolgt ist, müsste auch die von mir formulierte Abfrage funktionieren außer, beim Feld Datum handelt es sich um keine Datumsfeld.

Verfasst: Mi, 29.03.2006 09:53
von eric
Hallo Peter,
ich habe im OO-Writer die Funktion "Einfügen/Feld/andere//Datenbank//Datenbank hinzufügen" gewählt und dabei das csv-File als Datenbank Quelle angegeben. Änderungen des csv-Files haben unmittelbare Auswirkungen auf die Darstellung der Datenbank. Für mein Verständnis stellt das ebenfalls erzeugte odb-File soetwas wie die Verwaltungshülle um das csv-File dar. Ist dem so? OO-Base stellt diese Spalte in einem Datumsformat dar. Insfoern die Frage wie Spalten mit Inhalten wie einem Datum interpretiert werden? Ich hätte nun vermutet, dass über eine Datums- oder eine Stringoperation eine ergänzende Spalte zu füllen sei. Falsch gedacht?

Gruß Eric

Verfasst: Mi, 29.03.2006 10:35
von pmoegenb
Hallo Eric,

es ist so wie ich vermutet habe, mit der odb-Datei hast Du lediglich eine Verbindung zur csv-Datei hergestellt, damit sie als Datenquelle benutzt werden kann.

Ich habe die Abfrage an einer txt-Datei getestet. Dabei wird das entsprechende Datumsfeld in der Datenquellen-Ansicht ebenfalls als Datumsfeld erkannt (rechte Mausstaste auf Spaltenkopf, Option Spaltenformatierung). Die Abfrage funktioniert. Dasselbe müsste deshalb auch bei einer CSV-Datei funktionieren.

Hast Du bei der From Klausel den Datenbanknamen oder Tabellennamen angegeben. Angegeben werden muss der Name der Tabelle.

Verfasst: Mi, 29.03.2006 11:26
von eric
Hallo Peter,
ich habe den Tabellennamen angegeben.
Hier das vollstänige SELECT Statement, ist ja kein Geheimnis
SELECT "Anrede", "Vorname", "Nachname", "Geburtstag", YEAR( "Geburtstag" ) AS "Jahr" FROM "spg" "spg"
Das Format der Spalte Geburtstag wird als Datum erkannt, das der Spalte Jahr als Zahl.
Ist die Syntax des Statements so OK?

Gruß Eric

Verfasst: Mi, 29.03.2006 11:43
von pmoegenb
Hallo Eric,

ich kann nichts Falsches erkennen. Weshalb das bei einer csv-Datei nicht funktionieren soll ist mir nicht klar.

Wenn ich etwas mehr Zeit habe, werde ich das bei einer csv-Datei mal testen.

Verfasst: Mi, 29.03.2006 12:11
von eric
Hallo Peter,
vielen Dank für die Unterstützung.
Werde heute Abend weiter probieren. Wenn es bei dir funktioniert hat und wird sich ein Weg finden.

Gruß Eric

Verfasst: Mi, 29.03.2006 13:54
von pmoegenb
Hallo Eric,

ich habe mittels Excel eine csv-Datei angelegt. Der Inhalt sieht wie folgt aus:
  • Vorname;Nachname;Geburtsdatum
    Peter;Gunman;19.08.1922
    Carola;Weißnicht;15.11.1923
Nach der Anmeldung bei OO als CSV-Datenquelle startete ich diese Abfrage:

Code: Alles auswählen

SELECT "Nachname", "Vorname", YEAR( "Geburtsdatum" ) AS "Jahr" FROM "Geburtstage" "Geburtstage" ORDER BY "Nachname" ASC, "Vorname" ASC
Das Ergebnis war:
  • 1922 Gunman Peter
    1923 Weißnicht Carola
Es geht also auch mit csv-Dateien.

Verfasst: Do, 30.03.2006 07:51
von eric
Hallo Peter,
ich habe Gestern noch weiter probiert, letztlich hat es dann auch mit der Version 2.0.2 funktioniert. Ich hatte im Modus bearbeiten die Abfrage ausgeführt und dabei kein Ergebnis erhalten. Erst nachdem ich den Modus verlassen hatte und per Doppelklick die Ansicht öffnete erhielt ich ein Ergebnis. Anschließend war die Spalte auch im Modus Bearbeiten gefüllt. In der Version 2.0.1 erhielt ich bei gleicher Vorgehensweise gar keine Ergebnisse. Fehler zwischen Rücklehne und Tastatur? Wie auch immer, bei ein ganzes Stück weiter und möchte mich vielfalls für deine Hilfe und Gedult bedanken.

Gruß Eric