Oracle SQL中的日期格式

时间:2017-09-14 16:45:37

标签: sql oracle

下面是我的示例表和预期的输出以及我返回的相应查询。当我试图从PROV表中获取最早的日期记录时,我正在遇到DATE FORMAT ISSUES。如果不清楚,请告诉我

select *
from   beau_prov beau
       join provi prov
            on  trim(beau.no) = trim(prov.prov_no)
where  prov.ins_dt =
       ( select min(ins_dt)
         from   provi prov
         where  trim(beau.no) = trim(prov.no)
         and    beau.year = to_char(to_date(ins_dt, 'MM/DD/YYYY HH:MI:SS PM', 'YYYY'), 'YYYY') )

BEAU

----------------------      
NAME |  NO    | YEAR |
----------------------
CAR  |  1234  | 2013 |
AUTO |  4356  | 2013 |

PROV

-----------------------------------------------     
NO   |NUMBER | NAME  | INS_DT                 |
-----------------------------------------------
1234 |  987  |  ZZ   | 7/13/2013 11:36:05 PM  | 
1234 |  456  |  ZZ   | 12/31/2013 10:34:45 PM | 

RESULT

---------------------------------------
NAME |  NO    | YEAR |  NUMBER | NAME |
---------------------------------------
CAR  |  1234  | 2013 |  987    | ZZ   |

1 个答案:

答案 0 :(得分:0)

如果INS_DT是Oracle date,那么您只需将其插入另一个date列即可。

您看到的格式由客户端应用程序应用,不属于date值本身。

如果它以字符串形式提供给您的程序,则需要使用date将其转换为to_date(ins_dt,'DD/MM/YYYY HH:MI:SS PM')

如果INS_DT是Oracle dateBEAU_PROV.YEAR是包含4位数年份的字符串,那么您可以使用以下方式加入它们:

and beau.year = to_char(ins_dt,'YYYY')