Oracle 12c、ColdFusion 2018
我有两个 一模一样 两个不同数据库中的表。有一个视图使用UNION将数据连接到一个数据集,使用数据库链接。该视图可以工作,而且没有错误。
当我从ColdFusion中查询视图时,我得到一个 "not a valid month "的错误。
当我只查询其中一个表(而不是视图)时,我没有得到同样的错误。
知道为什么会发生这种情况吗?
Table1 in database1
EmployeeID (number)
ShiftCode (varchar2)
ShiftTime (date)
Table2 in database2
EmployeeID (number)
ShiftCode (varchar2)
ShiftTime (date)
ViewBothTables - Table1 and table2 created in database1
SELECT EmployeeID, ShiftCode, ShiftTime
FROM Table1
UNION
SELECT EmployeeID, ShiftCode, ShiftTime
FROM USER.Table2@databaseConnection2
Query1 in ColdFusion - This works - returns 48 rows
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.table1@databaseConnection1
Where ShiftTime <= #thisSchedWeekEnd#
AND
ShiftTime >= #thisSchedWeekStart#
Query2 in ColdFusion - This works - returns 10 rows
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.table2@databaseConnection2
Where ShiftTime <= #thisSchedWeekEnd#
AND
ShiftTime >= #thisSchedWeekStart#
Query 3 in ColdFusion - this gives me the error
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.viewBothTables@databaseConnection1
Where ShiftTime <= #thisSchedWeekEnd#
AND
ShiftTime >= #thisSchedWeekStart#
[Macromedia][Oracle JDBC Driver][Oracle]ORA-01843: not a valid month ORA-02063: preceding line from databaseConnection1
结构是相同的,Table1和Table2是两个不同数据库中相同表的副本(有不同的人)。视图可以工作,而且是可以查看的(哈哈)我是从第三个数据库查询的。ColdFusion的日期变量在三个例子中都是相同的,因为三次都是同一个变量。前两个查询正常。第三个查询说无效的月份。
我把这三个查询都放在页面上的一行中,完全和上面一样。前两个返回数据,第三个出错。
是的,这个设置很愚蠢。我也没办法,他们是继承的系统,我无法改变,只能应付。
我认为 date format
有别于 databaseConnection1
和 databaseConnection2
.
这就是为什么在两个不同的数据库上单独查询可以,而在一个数据库上合并查询就不行了。
请你在两个数据库中检查下面的表格,看看是否有以下内容 NLS_DATE_FORMAT
.
select * from nls_session_parameters;
更新1:-由于两个数据库的日期格式是一样的,所以可以尝试将日期格式明确地转换为如下参数。
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.viewBothTables@databaseConnection1
Where ShiftTime <= #dateFormat(thisSchedWeekEnd, "mm/dd/yyyy")#
AND
ShiftTime >= #dateFormat(thisSchedWeekStart, "mm/dd/yyyy")#