Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

Datum aus Text in SQL-Abfrage

Datum aus Text in SQL-Abfrage
15.09.2022 12:10:02
Stefan
Liebes Forum,
ich habe im SQL-Server eine Tabelle mit Daten, unter anderem ein Datumsfeld, was beim Einlesen in Excel über VBA leider nur als Text eingelesen wird.
Jetzt möchte in der Abfrage, den Wert direkt in ein Datum umwandeln.

Sub AbfrageSQL_X001()
Dim cnnConnect   As ADODB.Connection
Dim rstRecordset  As ADODB.Recordset
Dim strSQL           As String
Dim qQuery           As QueryTable
strSQL = "SELECT Auftragsauskunft_0.Object, " & _
"Auftragsauskunft_0.Liefertermin" & vbCrLf
strSQL = strSQL & "FROM Auftragsauskunft hma_Auftragsauskunft_0 " & vbCrLf
Set cnnConnect = New ADODB.Connection
cnnConnect.Open strConnSQL_Server
cnnConnect.CommandTimeout = 0
Set rstRecordset = New ADODB.Recordset
rstRecordset.Open Source:=strSQL, _
ActiveConnection:=cnnConnect, _
LockType:=adLockReadOnly, _
Options:=adCmdText
With ActiveSheet.QueryTables.Add( _
Connection:=rstRecordset, _
Destination:=Range("A3"))
.FieldNames = False
.RefreshStyle = xlInsertDeleteCells
.Refresh BackgroundQuery:=False
End With
END SUB
Ich habe schon versucht mit Dateserial() die einzelnen Werte zu übergeben, mit CDATE() oder nur mit DATE(),
aber alle Versuche endeten mit der Fehlermeldung DATESERIAL wird nicht als Name einer integrierten Funktion erkannt.
Ich hoffe mir kann jemand einen Tipp geben.
Vielen Dank
Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aus Text in SQL-Abfrage
15.09.2022 12:28:02
Stefan
Hallo Forum,
ich noch einmal.
Wenn ich in der Abfrage schreibe

"YEAR(Auftragsauskunft_0.Liefertermin), " & _
wird es auch als Jahr extrahiert. Genauso DAY() und MONTH().
Nur das komplette Datum mit DATE() oder DATESERIAL() funktioniert nicht.
Gruß Stefan
AW: Datum aus Text in SQL-Abfrage
15.09.2022 13:39:28
Stefan
Hallo Ralf,
danke für deine Antwort. Leider bringt sie mich noch nicht weiter, denn ich habe das Problem nicht in der WHERE - Abfrage, da habe ich das Format schon umgesetzt, ich habe das Problem in der Select - Anweisung, in dem Beispiel vereinfach mit Select *. An der Stelle möchte ich schon die Umwandlung haben.
Also Select YEAR(Auftragsauskunft.Termin) FROM .... funktioniert und gibt z.B. den Wert 2022 zurück.
Select Format(Auftragsauskunft.Termin,'dd.mm.yyyy') FROM .... gibt die Fehlermeldung Der Argumentdatentyp nvarchar ist für das 1-Argument der Format-Funktion ungültig.
SELECT DATE(Auftragsauskunft.Termin) FROM ... gibt die Fehlermeldung DATE wird nicht als Name einer integrierten Funktion erkannt.
ebenso DATESERIAL oder CDATE.
Gruß Stefan
Gruß Stefan
Anzeige
AW: Datum aus Text in SQL-Abfrage
16.09.2022 20:05:59
Piet
Hallo
könnte es so klappen, indem du das Datum über einen Text String mit Punkten aufbaust? Ein Versuch ist es wert.
mfg Piet
  • 
    Sub test()
    Dim LftDatum As Variant, NewDatum As Date
    LftDatum = Auftragsauskunft_0.Liefertermin
    NewDatum = CDate(Day(LftDatum) & "." & Month(LftDatum) & "." & Year(LftDatum))
    'oder so probieren:  zuerst String bilden, dann in CDate umwandeln
    NewDatum = CDate(CStr(Day(LftDatum) & "." & Month(LftDatum) & "." & Year(LftDatum)))
    End Sub
    

  • AW: Datum aus Text in SQL-Abfrage
    15.09.2022 14:31:16
    Michael
    Hallo Stefan,
    aber mit der Formatierung als Text, wird doch das Datum nicht zum Datum...?
    Was wäre, wenn Du die Spalte mit cast(Auftragsauskunft_0.Liefertermin as Integer) als Zahl selektierst und die importierten Daten dann in Excel als Datum formatierst?
    VG Michael
    Anzeige
    AW: Datum aus Text in SQL-Abfrage
    15.09.2022 15:30:42
    Stefan
    Hallo Michael,
    ich weiß nicht ob die Nachricht jetzt doppelt ist.
    Mit dem Cast wollte ich einmal im SQL-Server ausprobieren, ob es nun mit der Zählweise in Excel übereinstimmt, mag ich zu bezweifeln.
    Was mich wundert ist, dass ich ja über den SELECT YEAR(Auftragsauskunft.Termin) das richtige Jahr bzw. den Monat oder den Tag ermitteln kann.
    Somit müsste das Feld ja ein Datumsfeld sein, sonst könnte ich nicht die einzelnen Datumskomponenten extrahieren.
    Ich habe mir über den Recorder jetzt einmal die Query aufgebaut und versuche sie als Programm umzuschreiben. Wenn mir nichts anderes übrigbleibt,
    muss ich leider den Weg gehen, der mir nicht so gut gefällt.
    Gruß Stefan
    Anzeige

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige