alguém tem alguma ideia do porque quando pego alguma data com hora no plsql, sempre é tirado minha hora, quando atribuo a uma variavel do tipo date um valor com data e hora, a hora é tirada,
Complementando... a hora não é "tirada" ela só não é apenas apresentada por causa da formatação configurada para a data (NLS_DATE_FORMAT), mas a hora continua lá...
Independentemente da configuração de NLS_DATE_FORMAT estar correta ou não, sempre use formato de conversão explícito. O PUT_LINE faz conversão implícita da sua data com um to_char() oculto, por isso acontece o que você observa na execução. Veja o exemplo abaixo:
Realmente, o que acontecia era que eu estava debugando com o plsql, ai parava o mouse em cima, ele mostrava só a data, ai coloquei o dbms seco sem mascara, mostrava só a data, mas ela ta lá, forcando a mascara sai certo,
=]
realmente é independente do NLS_DATE_FORMAT, inclusive acho que nem aceita HH24:MI nesse parametro, ele é só pra data,
nesse caso também nem poderia, porque é uma function, e não procedure, ai não deixa também....
declare
-- Local variables here
vData date;
begin
-- Test statements here
DBMS_SESSION.SET_NLS('nls_date_format','''DD/MM/RRRR hh24:MI:SS''');
vData := sysdate;
dbms_output.put_line(to_char(vData));
end;
Se o campo é date, ele sempre armazenará a hora. Muitos clients de oracle não trazem essa informação (hora) mesmo com a parametrizaçãod o banco de forma correta. alguns tem configuração propria (sql nav, pl/sql dev, etc).
porém, sempre que for fazer algo com data e você deseja obtger a hora, use o