Hallo alle,
Ich habe einige Schwierigkeiten mit einer SQL-Abfrage. Mein Ziel ist es, benutzerdefinierte Daten aus der Funktion Calendar Box() zu verwenden, um jede SQL-Abfrage so zu ändern, dass Daten aus diesen Datumsbereichen abgerufen werden. Dies ist der Code für die Kalenderbox:
Cancel = "0";
New Window( "ZFG Cycle Start Date",
<<Modal,
cal1 = Calendar Box(),
cal1 << Show Time(0);
Button Box( "OK", cal2 = cal1 << get date;),
Button Box( "Cancel", Cancel = "1") );
cal3 = MDYHMS(cal2);
If(Cancel =="1", Stop());
New Window( "ZFG Cycle End Date",
<<Modal,
cal4 = Calendar Box(),
cal4 << show time(0);
Button Box( "OK", cal5 = cal4 <<get date;),
Button Box( "Cancel", Cancel = "1") );
If(Cancel =="1", Stop());
cal6 = mdyhms(cal5);
Und das ist mein Code für die SQL-Abfrage. Ich habe hervorgehoben, wo der Code nicht funktioniert:
sql_script = evalinsert(
"SELECT *
FROM OHT_MOVES_FLATFILE
Where day <= To_Date('^cal6^', 'M/D/Y')
and day >= To_Date('^cal3^', 'MDY')
and vehicle_type = 'FOUP'
and dst_tool= ANY('ZFG1_17C01','ZFG1_17C02', 'ZFG1_17W01', 'ZFG_17W02')
and rownum <100000
Order by request_time");Es läuft einwandfrei, wenn ich ein Datum manuell in diesem Format eingebe:
day <= To_Date('07/17/2017', 'MM/DD/YYYY')
Wenn ich die Variable von calenderbox() verwende, wird einer der folgenden Fehler zurückgegeben, je nachdem, wie ich versucht habe, ihn einzurichten. Die Kalenderfeldvariable gibt das Datum in diesem Format zurück: „17.07.2017 14:07:14 Uhr“
[Oracle][ODBC][Ora]ORA-01843: not a valid month
[Oracle][ODBC][Ora]ORA-01830: date format picture ends before converting entire input string
Wir würden uns über alle Empfehlungen freuen, die Sie haben
Sie müssen den Zeitstempel von Ihrem Datum entfernen, damit Oracle ihn ordnungsgemäß verarbeiten kann.
cal3 = substr(MDYHMS(cal2), 1, 10);
cal6 = substr(mdyhms(cal5), 1, 10);
Wenn Sie detaillierter vorgehen möchten, können Sie alternativ das entsprechende Datums-/Uhrzeitformat angeben, um die Uhrzeit einzubeziehen.