2014-09-26 83 views
0

我正在处理的是Sq l-Report,我需要此论坛专家的帮助。将数字添加到varchar并将结果与​​另一个varchar值进行比较

该报告是为了找到所有在这个地方的迟来的人和早期的人。 我必须在varchar2类型列的分钟部分添加10分钟,并且此列中的值类似于'10:41',这意味着我必须在添加10(数字)后将其设置为'10:51'。 我已应用to_number,但它不起作用。

我的Oracle版本= 7.0

查询我使用的是这样的:

select adm,emp_num,adm_emp_name,asm_st_tme,asm_ed_tme from adm,asm 
where adm_emp_num =120342 
having min(to_char(adm_ace_tme,'HH24:MI')) < asm_st_tme 
group by adm,emp_num,adm_emp_name,asm_st_tme,asm_ed_tme 

上将表的结构是:

ADM_ID    NUMBER(10,0)  Yes  1  
ADM_EMP_NUM   NUMBER(6,0) Yes  2  
ADM_EMP_NAM   VARCHAR2(35 BYTE) Yes  3  
ADM_CRD_NUM   VARCHAR2(10 BYTE) Yes  4  
ADM_ACE_DTE   DATE    Yes  5  
ADM_ACE_TME   DATE    Yes  6  
ADM_DOR_NUM   NUMBER(4,0) Yes  7  
ADM_DOR_NAM  VARCHAR2(15 BYTE) Yes  8  
ADM_DOR_STE  VARCHAR2(15 BYTE) Yes  9  
ADM_IN_OUT   VARCHAR2(5 BYTE)  Yes  10  
ADM_MAC_TYP  VARCHAR2(15 BYTE) Yes  11  

ASM表的结构是:

ASM_ID  NUMBER(1,0) 
ASM_SFT  VARCHAR2(1 BYTE) 
ASM_ST_TME VARCHAR2(5 BYTE) 
ASM_ED_TME VARCHAR2(5 BYTE) 
+0

版本7?如1992年的第7版?你能展示一些你的代码吗? – GolezTrol 2014-09-26 06:45:59

+0

是的,1992年的版本。 – Manu 2014-09-26 09:26:05

回答

0

首先你mus t使用此cols作为时间戳而不是varchar。使用alter命令来做到这一点。然后你可以使用下面的syantax来获得想要的结果。

SELECT SYADATE, SYADATE + INTERVAL '10' MINUTE 
FROM DUAL; 
+0

我无法修改结构。 – Manu 2014-09-26 09:23:35

相关问题