从Select查询中提取完整时间戳(包括日期); 神谕

LaD*_*ley 0 oracle select bulkinsert

所以我试图从一个表到另一个表插入多行数据.我这样做了; 但是,我的一些列有问题,特别是我的日期列.当查询返回数据时,它缺少通常存在的日期的时间组件.如果这没有意义,希望以下有助于事情有意义.

我的原始查询

SELECT 'insert into dante2 (subcar, batch_id, silicon, temperature, sulphur, manganese, phosphorus, start_pour, end_pour, sched_cast_date) values(',    SUBCAR,',',BBP.BATCH_ID   ,',',   SILICON                 ,',',TEMPERATURE                   ,',',   SULPHUR                 ,',',   MANGANESE                  ,',',   pHOSPHORUS                  ,',''',START_POUR      ,''',''',    END_POUR,''',''',SCHED_CAST_DATE              ,''');'
FROM  bof_chem_sample bcs, bof_batch_pour bbp, bof_celox_sample bofcs 
WHERE bcs.SAMPLE_CODE= to_char('D1')
and bofcs.sample_code=bcs.sample_code
and bofcs.batch_id=bcs.batch_id
and bcs.batch_id = bbp.batch_id
and bofcs.temperature>0
AND bbp.START_POUR>=to_date('01-JAN-11')
order by bbp.start_pour
Run Code Online (Sandbox Code Playgroud)

查询结果:

insert into dante2 (subcar, batch_id, silicon, temperature, sulphur, manganese, phosphorus, start_pour, end_pour, sched_cast_date) 
  values( 101,65277 ,0.6631,2525 ,0.0551,0.3366,0.043,'01-JAN-11','01-JAN-11','31-DEC-10'); 
insert into dante2 (subcar, batch_id, silicon, temperature, sulphur, manganese, phosphorus, start_pour, end_pour, sched_cast_date) 
  values( 123,65277 ,0.6631,2525 ,0.0551,0.3366,0.043,'01-JAN-11','01-JAN-11','31-DEC-10'); 
insert into dante2 (subcar, batch_id, silicon, temperature, sulphur, manganese, phosphorus, start_pour, end_pour, sched_cast_date) 
  values( 123,65278 ,0.7116,2470 ,0.0598,0.333,0.0423,'01-JAN-11','01-JAN-11','31-DEC-10'); 
insert into dante2 (subcar, batch_id, silicon, temperature, sulphur, manganese, phosphorus, start_pour, end_pour, sched_cast_date) 
  values( 116,65278 ,0.7116,2470 ,0.0598,0.333,0.0423,'01-JAN-11','01-JAN-11','31-DEC-10'); 
Run Code Online (Sandbox Code Playgroud)

但是,我希望日期看起来像dd-mon-yy hh24:mi.有谁知道如何解决这一问题?

Cha*_*ndu 7

两种选择:

1)如果您具有更改会话权限,请在运行SELECT语句之前更改NLS_DATE_FORMAT,如下所示:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI';
Run Code Online (Sandbox Code Playgroud)

2)如果您没有ALTER会话权限,则对每个日期字段应用转换,如下所示(下面的stmnt显示为START_POUR)

'TO_DATE(''' || TO_CHAR(START_POUR, 'DD-MON-RR HH24:MI') || ''', ''DD-MON-RR HH24:MI'')'
Run Code Online (Sandbox Code Playgroud)