Questão nº 51
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 51)
João trabalha na filial de uma multinacional no Rio de Janeiro (GMT-3) e recebeu alguns relatórios da sede da empresa localizada na Califórnia (GMT-8). Durante a verificação, João identificou uma tabela com uma coluna que trazia informações de timestamp e timezone da sua filial e não da sede onde o relatório havia sido gerado. João entrou em contato com a sede para relatar o ocorrido, pois, se o relatório foi feito na Califórnia, deveria estar com as configurações de timestamp e timezone da sede. Entretanto, a sede da empresa informou que tabela anexada ao relatório teve seu campo definido como:
- Alocaltimestamp
- Bcurrent_timestamp
- Ctimestamp
- Dtimestamp with timezone
- Etimestamp with local timezone (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Quando um banco de dados armazena um timestamp, ele guarda um ponto específico no tempo. A forma como ele lida com fusos horários (timezones) e como exibe essa informação ao usuário é o que diferencia os tipos. O tipo timestamp with local timezone é especial porque ele armazena a data e hora internamente (geralmente em UTC, um fuso horário universal) e, ao exibir, converte automaticamente para o fuso horário da sessão do usuário que está consultando.
- (A) Incorreta:
localtimestampretorna a data e hora atual do servidor do banco de dados, sem armazenar ou gerenciar fusos horários de forma adaptativa para exibição. - (B) Incorreta:
current_timestampé uma função que retorna a data e hora atual da sessão ou do servidor, podendo incluir informações de fuso horário, mas não é um tipo de dado de coluna que armazena e adapta o fuso horário para cada usuário. - (C) Incorreta:
timestamp(outimestamp without timezone) armazena apenas a data e hora, sem nenhuma informação de fuso horário. A interpretação de qual fuso horário ela representa depende do contexto ou da aplicação, não havendo conversão automática. - (D) Incorreta:
timestamp with timezonearmazena a data, hora e o fuso horário original em que a informação foi registrada. Ao ser consultado, pode ser exibido com o fuso horário original ou convertido para o fuso horário da sessão, mas a informação do fuso horário original é mantida. A armadilha aqui é que, em alguns sistemas, este tipo também se comporta como otimestamp with local timezone(armazenando UTC e convertendo para a sessão). No entanto, a distinção é quetimestamp with local timezoneé explicitamente projetado para não reter o fuso horário original, apenas o ponto no tempo, e sempre adaptar à sessão. Se o relatório foi feito na Califórnia e apareceu como se fosse do Rio, significa que o fuso horário original da Califórnia não foi mantido e sim adaptado ao fuso horário de João (Rio). - (E) Correta:
timestamp with local timezone(conhecido comoTIMESTAMP WITH LOCAL TIME ZONEem Oracle outimestamptzem PostgreSQL, embora com algumas nuances de implementação) armazena a data e hora internamente em um fuso horário de referência (geralmente UTC). Quando João, no Rio (GMT-3), consulta essa coluna, o banco de dados automaticamente converte e exibe a data e hora no fuso horário da sessão dele. Isso explica por que o relatório, gerado na Califórnia (GMT-8), apareceu para João com as configurações de fuso horário do Rio.
Fonte: FGV CVM 2024 Analista CVM - TI Infraestrutura e Segurança (Perfil 9) (Caderno Tipo 1). Reproduzida para fins de estudo.