大家好,
我在使用SQL查询时遇到了一些困难。我的目标是使用日历框()函数中的用户定义日期来修改每个sql查询以从这些日期范围之间提取数据。 这是日历框的代码:
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);
这是我的SQL查询代码。我已经突出显示了代码分解的位置:
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");当我以这种格式手动输入日期时它运行正常:
day <= To_Date('07/17/2017', 'MM/DD/YYYY')
使用calenderbox()中的变量,根据我尝试设置它的方式返回以下错误之一。日历框变量将以此格式返回日期:“07/17/2017 2:07:14 PM”
[Oracle][ODBC][Ora]ORA-01843: not a valid month
[Oracle][ODBC][Ora]ORA-01830: date format picture ends before converting entire input string
您的任何建议都将受到赞赏
您必须从您的日期中删除时间戳,以便Oracle正确处理它。
cal3 = substr(MDYHMS(cal2), 1, 10);
cal6 = substr(mdyhms(cal5), 1, 10);
或者,如果您想要更精细,可以提供适当的日期/时间格式以包含时间。