none
Onde errei? RRS feed

  • Pergunta

  • 
    
    
    
    
    

    Onde errei?

    Sql Server 2008 R2

    update ctarecebe set valor =valor+(valor*0.05) where nome='CONCREGEL - CONCRETO USINADO LTDA'  and Vencimento between '2002-01-01' and '2002-06-31'

    Desde já, obrigado

    
    segunda-feira, 12 de agosto de 2013 20:48

Respostas

Todas as Respostas

  • Aparentemente esta tudo certo.. Qual erro vc recebe?


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 12 de agosto de 2013 20:58
  • Boa noite,

    Denildo, um detalhe que reparei no seu comando é que o dia 31 de junho não existe ('2002-06-31').

    Abraço


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Romy Moura segunda-feira, 12 de agosto de 2013 21:34
    • Marcado como Resposta Denis Braga terça-feira, 13 de agosto de 2013 19:20
    segunda-feira, 12 de agosto de 2013 21:28
  • Verifique tambem como esta o formato da data no seu campo "vencimento" se realmente esta como AAAA-MM-DD

    Alexandre Matayosi Conde Mauricio.

    terça-feira, 13 de agosto de 2013 15:30
  • Verifique tambem como esta o formato da data no seu campo "vencimento" se realmente esta como AAAA-MM-DD

    Alexandre Matayosi Conde Mauricio.

    Nao existe formato para o campo data... O erro que deve estar retonando deve ser (ajudaria se o autor postasse aqui) é que existe uma data fora dos parametros. O formato usado no exemplo é universal e o SQL sempre consegue converte-lo (neste caso de string para datetime)... o problema é que a data realmente é invalida.. Nao existe 31 de junho como disse Gapimex.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    terça-feira, 13 de agosto de 2013 15:38
  • Sim, porem se o tipo de dados do campo vencimento for string a maneira como passa pode influenciar, concordo se no caso este campo for de um tipo de data.

    O que acredito que acontece é que não ha registros com os filtros passados na query e não deve estar retornando nada, mesmo que o filtro da data tenha um dia que não existe como 31/06 deveria funcionar normalmente trazendo os dados de  01/01/2002 a 30/06/2002 e que tenha o nome que foi passado como outro filtro.


    Alexandre Matayosi Conde Mauricio.

    terça-feira, 13 de agosto de 2013 15:47
  • Teste ai..

    Crie uma tabela com um campo data e faça:

    select * from teste where dt between '2002-01-01' and '2002-06-31'

    Voce vai ver que vai retornar um erro:

    Server: Msg 242, Level 16, State 3, Line 1 The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

    Motivo: a conversao implicita de string para datetime falha.

    veja mais aqui:

    http://www.sql-server-helper.com/error-messages/msg-242.aspx

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    terça-feira, 13 de agosto de 2013 16:03
  • Isso mesmo William, falha minha, tenho costume de trabalhar campos que tem data como o tipo inteiro, ai sim não teria problema se fosse um between por exemplo:

    between 20120620 and 20120631.


    Alexandre Matayosi Conde Mauricio.

    terça-feira, 13 de agosto de 2013 16:11