Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 1 da Aula 1 - Alunos sem matrícula e o Exists

Mensagem 242, Nível 16, Estado 3, Linha 116 A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.

Erro ao executar SQL, Esse erro está dando na parte da matricula.

6 respostas

Tayran,

esse problema está dando devido o arquivo que você está importando .

altere somente os dados da matricula deixando apenas o valor da data , retirando o horário que dará certo .

espero ter ajudado , Bons estudos

Fui testando até conseguir dessa forma mesmo que falou :

INSERT INTO matricula (aluno_id, curso_id, data, tipo) VALUES (1,1,'20141125','PAGA_PF'), (2,1,'20150525','PAGA_PJ'), (3,3,'20150721','PAGA_PF'), (4,4,'20150515','PAGA_CHEQUE'), (7,1,'20150310','PAGA_BOLETO'), (8,3,'20140505','PAGA_PJ'), (9,2,'20150207','PAGA_PF'), (10,7,'20150115','PAGA_PJ'), (4,7,'20140708','PAGA_PJ'), (8,1,'20140601','PAGA_CHEQUE'), (1,4,'20141110','PAGA_BOLETO'), (2,4,'20141001','PAGA_PJ'), (3,4,'20141115','PAGA_PF'), (2,2,'20150104','PAGA_PJ');

O que eu gostaria de saber é , se não é para colocar com horário por que disponibilizaram isso com horário e data ? não entendo isso.

Na verdade Tyran,

não sei porque neste exercício não está inserindo os dados , pois a sintaxe para inserção de elementos tipo datetime está correta .

fiz um teste com outro database e fazendo somente a tabela matricula , funcionou perfeitamente . a inserção dos dados .

levei um tempo para descobrir o motivo disto também .

espero ter ajudado , caso foi sanada sua dúvida , feche o tópico por gentileza

solução!

Tayran / Celso, bom dia.

O formato de data que o banco de dados aceita para entrada ou consulta de dados no Microsoft SQL Server depende de alguns fatores:

  • Qual o idioma de instalação do banco de dados.
  • Qual o idioma do usuário de banco de dados que você está usando para conectar-se.
  • Qual formato de data foi especificado (se foi especificado) na sessão com o comando SET DATEFORMAT

O MS SQL Server aceita um formato de data (padrão ISO) que independe de qualquer configuração, que são estes:

YYYY-MM-DDThh:mm:ss[.mmm]

YYYYMMDD[ hh:mm:ss[.mmm]]

Tayran, o seu teste inicial funcionou pois caiu no segundo cenário. Datas sem os hífens e hora opcional.

Também encontrei o mesmo problema e consegui resolver apenas tirando o hífen da data.

Tive o mesmo problema, para arrumar segui as instruções do Hugo e alterei a linha 116 para a seguinte:

INSERT INTO matricula (aluno_id, curso_id, data, tipo)
VALUES
    (1,1,'2014-11-25T16:16:05','PAGA_PF'),
    (2,1,'2015-05-25T16:16:25','PAGA_PJ'),
    (3,3,'2015-07-21T16:16:30','PAGA_PF'),
    (4,4,'2015-05-15T16:15:35','PAGA_CHEQUE'),
    (7,1,'2015-03-10T16:15:35','PAGA_BOLETO'),
    (8,3,'2014-05-05T16:15:35','PAGA_PJ'),
    (9,2,'2015-02-07T16:15:35','PAGA_PF'),
    (10,7,'2015-01-15T16:15:35','PAGA_PJ'),
    (4,7,'2014-07-08T16:15:35','PAGA_PJ'),
    (8,1,'2014-06-01T16:15:35','PAGA_CHEQUE'),
    (1,4,'2014-11-10T16:15:35','PAGA_BOLETO'),
    (2,4,'2014-10-01T16:15:35','PAGA_PJ'),
    (3,4,'2014-11-15T16:15:35','PAGA_PF'),
    (2,2,'2015-01-04T00:00:00','PAGA_PJ');

Espero que ajude mais alguém.