WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

SQL Abfrage mit Datum als Variable

 

jh4711
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 10.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2018, 17:35     Titel: SQL Abfrage mit Datum als Variable
  Antworten mit Zitat      
Hallo zusammen,

ich möchte eine SQL-Abfrage durchführen mit der Besonderheit, dass ich mein Datum, zu dem die Daten ausgegeben werden sollen, als Variable übergeben möchte.

Mein Ursprungscode, welcher funktioniert:
Code:

['SELECT Tabelle2.*  FROM Tabelle1 INNER JOIN Tabelle2 on Tabelle1.a=Tabelle2.a
where Tabelle2 .Datum = Tabelle1.Datum
AND Tabelle2 .Datum=#12/1/2005#'];
 


Wenn ich nun versuche den 1. Dezember durch eine Variable X zu ersetzen, kommt eine Fehlermeldung:
Code:

x='12/1/2005';
... AND Tabelle2 .Datum=#'x'#'];

Error: Unexpected MATLAB expression.
 


Habe auch versucht:
Code:

...AND Tabelle2 .Datum='x]

% als auch
x='#12/1/2005#';
...AND Tabelle2 .Datum='x]
 


Hier sah es noch so einfach aus, leider ohne Beispiel zu einem Datum
https://de.mathworks.com/help/datab.....acters-and-variables.html

Könntet ihr helfen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2018, 00:04     Titel:
  Antworten mit Zitat      
Hallo,

Leerzeichen oder Kommas einfügen.
Code:
['SELECT Tabelle2.*  FROM Tabelle1 INNER JOIN Tabelle2 on Tabelle1.a=Tabelle2.a
where Tabelle2 .Datum = Tabelle1.Datum
AND Tabelle2 .Datum=#', x, '#'];


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jh4711
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 10.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2018, 00:14     Titel:
  Antworten mit Zitat      
Hallo Harald,

habe jetzt ca. 15 Varianten ausprobiert. Jedes Mal kommt die Meldung

Code:
Error using adodb_query
Too many input arguments.


Wenn ich dann wieder x durch das Datum in der Query ersetze, klappt es. Hast du noch weitere Ideen? Habe im Internet schon verschiedenste Varianten mit ' x ' oder + x + gesehen, doch leider hat nichts funktioniert. Liegt es vielleicht an der Deklarierung des Datums?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2018, 05:37     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler liegt anscheinend im Aufruf von adodb_query. Wenn du den nicht funktionierenden und vielleicht noch den funktionierenden Auruf postest, kann man dir vielleicht weiterhelfen.

Zitat:
Liegt es vielleicht an der Deklarierung des Datums?

Wie deklarierst du denn das Datum?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jh4711
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 10.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2018, 12:43     Titel:
  Antworten mit Zitat      
Hallo Harald,

Funktioniert:
Code:

temp=adodb_query(DB,'SELECT Preis.*  FROM Constituents INNER JOIN Preis on Preis.Isin=Constituents.Isin where Constituents.Datum = Preis.Datum AND Constituents.Datum=#'12/1/2005#');
 



Funktioniert nicht (inkl. Änderung bzgl. Kommaposition und Leerzeichen):
Code:

x='12/1/2005';
temp=adodb_query(DB,'SELECT Preis.*  FROM Constituents INNER JOIN Preis on Preis.Isin=Constituents.Isin where Constituents.Datum = Preis.Datum AND Constituents.Datum=#' , x , '#');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2018, 13:26     Titel:
  Antworten mit Zitat      
Hallo,

du hattest in deinem ursprünglichen Beitrag eckige Klammern. Diese musst du auch im tatsächlichen Befehl setzen, damit aus den drei einzelnen Zeichenketten eine lange wird.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jh4711
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 10.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2018, 13:43     Titel:
  Antworten mit Zitat      
Harald, man könnte entweder meinen, dass ich es mittlerweile mit den Klammern gelernt haben müsste, oder dass Matlab mir jedes mal Steine in den Weg schmeißt... Very Happy Ich weiß gar nicht, woher diese eckige Klammern kommen. Aber es funktioniert... Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.