我有一张包含所有日期变化的表格。对于该表,可以在订单建立时加入或具有该特定时间范围,会计年度,会计季度等的更多详细信息。但是,当我把它加入一张桌子时,我们会用一张桌子叫SALES,它会回到错误的世纪。
当表格根据其格式为DD-MM-YY的“销售日期”加入时,它将其“销售日期”的值(例如05-JUN-55)加入日期表。当这种联接发生时,它会根据需要将日历年推迟到2055年,而不是1955年。
问题的加入是:
WHERE (1 =1)
AND (SALES.SALE_DATE = DATES.CALENDAR_DATE (+))
日期表的范围为1800s-2100s。意思是有多个05-Jun-55s (1855,1955,2055 ....) Sample snippet of how the DATE table is structured.
我尝试过查看是否是数据库的日期设置。我们在ASM上运行oracle 12c。
当前NLS参数设置如下:
NAME TYPE VALUE
----------------------- ------ --------
nls_calendar string
nls_comp string BINARY
nls_currency string
nls_date_format string
nls_date_language string
nls_dual_currency string
nls_iso_currency string
nls_language string AMERICAN
nls_length_semantics string BYTE
nls_nchar_conv_excp string FALSE
nls_numeric_characters string
nls_sort string
nls_territory string AMERICA
nls_time_format string
nls_time_tz_format string
nls_timestamp_format string
nls_timestamp_tz_format string
在我们的某个环境中添加example返回正确结果的位置。有问题的日期在红色框中。 2040年1月1日。这是不正确的。
在我们的某个环境中添加example返回错误结果的位置。有问题的日期在红色框中。 1940年1月1日
如果有益,可以提供更多信息。