SQL查询在与另一个表

时间:2018-04-18 18:44:46

标签: sql oracle12c aix

我有一张包含所有日期变化的表格。对于该表,可以在订单建立时加入或具有该特定时间范围,会计年度,会计季度等的更多详细信息。但是,当我把它加入一张桌子时,我们会用一张桌子叫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日

如果有益,可以提供更多信息。

0 个答案:

没有答案