Questão nº 64
Questão de Administração de Banco de Dados · FGV MPAL 2018 (nº 64)
FGV2018Analista do Ministério Público - Administrador de Banco de DadosAdministração de Banco de Dados
Gabarito: Bver comentário ↓
O comando SQL
```
select convert(real,getdate())
```
executado no MS SQL Server, no dia 27/04/2018, às 18.00h, retornou
- Aum erro de conversão.
- B43215,75 (alternativa correta)
- C43312,5
- D20180427,18
- E2018042718,0
Resposta comentada
Gabarito Alternativa B
No MS SQL Server, ao converter um valor DATETIME para o tipo numérico REAL, o sistema representa a data como o número de dias decorridos desde a data base de 1º de janeiro de 1900, e a hora como uma fração desse dia.
- Cálculo dos dias: A data 27/04/2018 está 43215 dias após 1º de janeiro de 1900. (Você pode verificar isso com
SELECT DATEDIFF(day, '1900-01-01', '2018-04-27')que retorna 43215). - Cálculo da fração da hora: As 18:00h representam 18 horas de um total de 24 horas em um dia. A fração é 18 / 24 = 0,75.
- Resultado final: Somando os dias e a fração da hora, temos 43215 + 0,75 = 43215,75.
- (A) Incorreta: A conversão de
DATETIMEparaREALé um tipo de conversão válido no MS SQL Server, não gerando erro. - (B) Correta: O valor 43215,75 é o resultado da conversão, onde 43215 representa o número de dias desde 01/01/1900 até 27/04/2018, e 0,75 representa 18 horas (18/24 de um dia).
- (C) Incorreta: O valor 43312,5 não corresponde à data e hora fornecidas.
- (D) Incorreta: Esta alternativa sugere uma concatenação do ano, mês, dia e hora (20180427,18), o que não é o comportamento da conversão para
REAL. A armadilha aqui é pensar que o SQL Server simplesmente formataria a data e hora em um número, em vez de convertê-la para sua representação numérica interna. - (E) Incorreta: Semelhante à alternativa D, esta opção representa uma formatação ou concatenação, e não a conversão numérica de
DATETIMEparaREAL.
Fonte: FGV MPAL 2018 Analista do Ministério Público - Administrador de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.