je viens d'essayer ca et ca marche ! heu...j'espère que c'est sous Oracle....
j'ai pris sysdate à la place de ton champ et j'ai soustrait une durée de 3600secondes (j'ai aussi essayé avec plus...)
Sachant qu'on ne peut avoir plus de 86400 secondes dans une journée :
select decode(sign(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600),0,trunc(sysdate),1,to_char(trunc(sysdate),'DD/MM/YYYY')||to_char(to_date(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600,'SSSSS'),'HH24:MI:SS'),to_char(trunc(sysdate)-1,'DD/MM/YYYY')||to_char(to_date(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600+86400,'SSSSS'),'HH24:MI:SS')) from dual;