我有两个问题。
我正在尝试加入他们,所以我只是从一个写导出,而不是手动加入他们在excel中。
(SELECT
b.OUT_NO,
a.ACCNO,
a.BILL_ACCNO,
a.NAME,
a.HOUSE_NO,
a.STREET,
a.HOUSE_NO2,
a.ZIP,
a.ID,
b.TIME_STAMP,
b.REST_DATE,
c.RESTORED_TIME,
b.OUT_CMNT
FROM brook.account a,
brook.problem b,
brook.history c
WHERE c.OUT_NO = b.OUT_NO
AND a.ID = c.ID
AND ( (a.NAME Is Not Null)
AND (a.DISC Is Null)
AND (b.TIME_STAMP>?)
AND (c.RESTORED_TIME<?))
)和
(SELECT
b.OUT_NO,
a.ACCNO,
a.BILL_ACCNO,
a.NAME,
a.HOUSE_NO,
a.STREET,
a.HOUSE_NO2,
a.ZIP,
a.ID,
b.TIME_STAMP,
b.REST_DATE,
c.RESTORED_TIME,
b.OUT_CMNT
FROM brook.account a,
brook.problem b,
brook.history c
WHERE c.OUTAGE_NO = b.OUTAGE_NO
AND a.ID = c.ID
AND ( (a.NAME Is Not Null)
AND (a.DISC Is Null)
AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?)
AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?)
)
)我怎样才能加入这2个呢?在1中,我尝试了UNION ALL,但是我得到了ora-01847 day of month must be between 1 and last day of month错误。
?是参数,它链接到电子表格上的单元格。excel数据参数的格式。11/04/2013 00:00:00
谢谢
发布于 2013-11-16 19:53:51
错误是关于日期格式的,而不是关于联合的。
如果您将单元格值作为字符串参数传递,Oracle会尝试将其转换为日期,以便与表列中的date或timestamp值的列相比较。为了完成这个转换,Oracle使用它内部的默认date representation format,在本例中它不是mm/dd/yyyy hh24:mi:ss。
解决这种情况有两种可能:
date类型的参数,以便在将值传递给Oracle之前查询并将值转换为日期。查看examples on MSDN以及CreateParameter和Parameters.Append方法的描述。to_date Oracle函数将查询中的值转换为日期。更改查询来源中的条件
AND (b.TIME_STAMP>?)
AND (c.RESTORED_TIME<?))和
AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?)
AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?)至
AND (b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss') )
AND (c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss') ))和
AND (
b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss')
And
b.TIME_STAMP < to_date(?,'mm/dd/yyyy hh24:mi:ss')
)
AND (
c.RESTORED_TIME > to_date(?,'mm/dd/yyyy hh24:mi:ss')
And
c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss')
)https://stackoverflow.com/questions/20008304
复制相似问题