Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Postgres Abfrage
#1
Hallo zusammen, 

ich habe ein Problem mit einer Abfrage meiner Postgres.

' SQL-Abfrage für Filter 2 Tabelle times (Anwesenheitszeiten)
sqlQuery2 = "SELECT DISTINCT duration_minutes, employee_number, LEFT(start_time, 10) " & _
          "FROM public.times " & _
          "WHERE duration_minutes > 0"

Hier führt der LEFT-Befehl zu einem Fehler. 

Ohne LEFT läuft alles durch, das Problem ich rufe hier über 20.000 Werte ab. Das will ich natürlich nicht. Ich will nur Daten aus dem aktuellen Jahr haben. 

In start_time sind die Zeitwerte im Format dd.mm.yyyy hh:mm:ss gespeichert. 

Normalerweise sollte LEFT mir das Datum herausgeben, dann könne ich weiter Filtern. 

Ich verstehe nicht warum.
Antworten Top
#2
Hallo,

teste mal so:

Code:
sqlQuery2 = "SELECT DISTINCT duration_minutes, employee_number, " & LEFT(start_time, 10) & " & _
          "FROM public.times " & _
          "WHERE duration_minutes > 0"

Gruß Uwe
Antworten Top
#3
Hi Uwe, 

danke für die Hilfe, aber VBA schluckt es leider auch nicht. 

Vllt noch als Hinweis ich verwende Excel in der Officeversion 2022. 

LG
Antworten Top
#4
Hallo h...,

ist start_time wirklich als Text abgespeichert oder als Datum mit dem entsprechenden Ausgabeformat?
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#5
Hallöchen,

Zitat:Ohne LEFT läuft alles durch, das Problem ich rufe hier über 20.000 Werte ab. Das will ich natürlich nicht. Ich will nur Daten aus dem aktuellen Jahr haben.

Deine WHERE-Klausel enthält aber nur duration_minutes oder geht es darunter mit AND .. weiter?

LEFT(start_time, 10) würde hier nur, wenn's funktioniert, die Ausgabe der "Spalte" auf 10 Stellen beschränken.
eventuell müsstest Du start_time auch erst mit to_char umwandeln, damit LEFT greifen kann.

Um die Rückgabe einzuschränken, müsste irgendwo in Deinem WHERE was in der Art wie
AND start_time >= '2023-01-01' --> oder > '01-JAN-2023' --> oder ....
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Code:
Sub M_snb()
    With Sheet1.QueryTables.Add("ODBC;DSN=Excel files;DBQ=" & ThisWorkbook.FullName, Sheet1.Cells(1, 10))
        .CommandText = "SELECT `AA`, `BB`, `CC` FROM [Sheet1$] Where `BB`>0 And Year(`CC`)='2023'"
        .Refresh False
    End With
End Sub

Ersetze `AA`, `BB` usw.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Guten Morgen, 

vielen Dank für die Antworten, 

hier ist die Lösung:

sqlQuery2 = "SELECT DISTINCT duration_minutes, employee_number, " & _
            "LEFT(TO_CHAR(start_time, 'dd.mm.yyyy'), 10) AS date_only " & _
            "FROM public.times " & _
            "WHERE duration_minutes > 0"

Das Problem war wie angemerkt, dass LEFT nicht greifen konnte wegen der Formatierung, so gehts. 


Nochmals vielen vielen Dank :)

LG
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste