Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SQL Datenkonvertierung (Text->Datum)

SQL Datenkonvertierung (Text->Datum)
17.04.2014 12:43:37
Arthur
Hallo Herber-Forum.
Zur Datenaufbereitung hole ich mir aus einer Exceltabelle Werte per SQL (ADODB) in eine andere. Nun nage ich an einem Problem:
(Angebliche) Datumswerte in einer Spalte sind als Text gespeichert [bspw. '12 Mar 2014']. Dadurch funktioniert 'Select Max(PlanDatum)' nicht. Es siegt immer der '31. Sep', weil in textlicher Sortierung am größten. Beim einfachen Auslesen der Werte erkennt SQL den Datentyp und wandelt die Werte in ein Datum um; so kommen sie jedenfalls in Excel an. Innerhalb der Max()-Funktion funktioniert das offenbar nicht.
Die theoretische Lösung: 'Select Max( MacheinDatumAus(PlanDatum) )'
Hürden:
- Die 'MacheinDatumAus'-Funktion kenne ich nicht.
- Das Datum liegt in englischer Sprache (Mar, Oct, Dec) vor, wobei Office auf deutsch steht.
Wär super, wenn jemand eine Lösung hätte.
Danke, Arthur

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 13:07:02
Philipp
Hallo Arthur,
spontan fällt mir jetzt ein, die Monate per Select Case auf deutsch zu übersetzen und ggfls. zusätzlich mit CDate() konvertieren.
Gruß
Philipp

AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 14:08:27
Arthur
Hi zusammen.
Die Antwort von Philipp hat mich mit CDATE() ein Stück weiter gebracht. Datumstexte, die in deutscher Nomenklatur abgelegt sind ('12 Dec 2014' beispielsweise) werden weiterhin nicht erkannt .. weil ich mit dem Select Case innerhalbt einem SQL-Commands nichts anfangen kann .. .
Möglicherweise deswegen, wenn auch nicht gesichtert, streikt der SQL, sobald die Max()-Funktion hinzu kommt.
Wenn noch jemand eine Idee hat, nur her damit. Würde mich freuen.
Gruß, Arthur

Anzeige
AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 14:11:44
Philipp
Hallo Arthur,
versteh das Problem nicht ganz.
Du packst die Werte aus einer Excel doch in eine andere, oder? Sobald die Daten in Excel sind, sind die SQL Befehle ja relativ egal.
Da kannst Du doch alles in deutsche Nomenklatur packen ('Dec' ist aber nicht deutsch, oder?) und dann CDate() machen, oder nicht?
Gruß
Philipp

AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 14:22:14
Arthur
Hallo Philipp.
Das Datum ist nicht der einzige Wert, der 'importiert' werden soll. Heißt, dass aus mehreren Tabellen die Werte zusammengesucht werden. Eine Lösung über eine zusätzliche Hilfstabelle fällt dabei aus, weil kompliziert. Konkret soll mit der MAX()-Funktion zu den per einfachem SELECT(..) gefundenen Daten der letzte Termin hinzugefügt werden.
"SELECT ID,Name,etc FROM MyTab ORDER BY ID"
Für die Kombination ID,Name ist im Grunde die ID bereits eindeutig, kommt jedoch in Bezug auf das Datum (in Textformat) mehrfach vor. Was fehlt ist eben die Selektion nach ID und das letzte Datum bei dieser ID.
Ich hoffe, dass mein Problem nun ein wenig klarer geworden ist.
Gruß, Arthur

Anzeige
AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 14:46:05
Oberschlumpf
Hi Arthur
ich geb Phillip recht.
Das Einlesen mit SQL und Aufrufen der Funktion MAX() geschieht doch NICHT GLEICHZEITIG, sondern Eins nach dem Anderen.
1. So kannst du die Werte doch zuerst mit SQL einlesen, einer Zelle oder Variablen zuordnen.
2. BEVOR jetzt MAX() oder andere Funktionen, die Fehler verursachen, zum Einsatz kommen, ändere die "Jan","Feb","Mar"..."Dec" Werte in Zelle oder Variable mit z Bsp Select Case in rechenbare Datumswerte um
3. JETZT kommt MAX() oder was auch immer zum Einsatz
Und wenn das auch nicht hilft, kann zumindest ich OHNE Bsp-Datei + Code auch nicht helfen.
Hilfts denn?
Ciao
Thorsten

Anzeige
AW: SQL Datenkonvertierung (Text->Datum)
17.04.2014 15:03:01
EtoPHG
Hallo Arthur,
Pack das Problem an der Wurzel: Ich kenne kein DB System, dass nicht auch Datums-Formatierungs/Konvertierungs Functions zur Verfügung stellt.
Für Oracle könnte dann z.B. ein SQL so lauten:
SELECT TO_CHAR(sysdate, 'DD.MM.YYYY') FROM dual;
, was dir ein XL-'kompatibles' Datum zurückliefert.
Gruess Hansueli

AW: SQL Datenkonvertierung (Text->Datum)
18.04.2014 09:58:06
Tino
Hallo,
hier mal ein Beispiel dieses Datum umzuwandeln.
Sub Beispiel()
Dim varMonate(), n&
Dim varDatum

'zuerst die Monatsnamen gekürzt/englisch 
With Application
    Redim varMonate(1 To 12)
    For n = 1 To 12
        varMonate(n) = .Text(DateSerial(2014, n, 1), "[$-409]MMM")
    Next n
End With
''oder auch so 
'varMonate = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") 



varDatum = "12 Jan 2014" 'Datum aus Abfrage 
varDatum = Split(varDatum, " ")
varDatum = DateSerial(varDatum(2), Application.Match(varDatum(1), varMonate, 0), varDatum(0))
MsgBox varDatum

'oder so 
varDatum = "12 Dec 2014" 'Datum aus Abfrage 
varDatum = DateSerial(Split(varDatum, " ")(2), Application.Match(Split(varDatum, " ")(1), varMonate, 0), Split(varDatum, " ")(0))
MsgBox varDatum

End Sub
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige