none
por defeito 1900-01-01 RRS feed

  • Pergunta

  • ola

    numa tabela tenho a coluna entrada com data type = date.

    se fizer um insert e não escrever nada para essa coluna o sql escreve por defeito a data 1900-01-01. Como faço para escrever null?

    valeu

    sábado, 29 de setembro de 2012 20:04

Respostas

  • Jonas é justamente este o erro, o insert com aspas simples. Não sei explicar o porque, mais inserindo com aspas simples o SQL converte automaticamente para o default value do tipo date que é 1900-01-01. Tente fazer passando o valor NULL que vai dar certo:

    insert into T1 values (1,NULL)


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 1 de outubro de 2012 01:41
  • Quando você passa vazio ('') para inserção de um campo data, o SQL Server atribui a este campo o valor padrão.

    E a data padrão de qualquer campo data (seja Date, DateTime ou SmallDateTime) é 01-01-1900.

    Se você quiser que o campo fique sem valor, não passa informação alguma para o campo ou passe explicitamente Null.

    No Books OnLine, sobre o campo Date:

    Valor padrão

    1900-01-01


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 1 de outubro de 2012 11:48
    Moderador

Todas as Respostas

  • Jonas não existe nenhuma CONSTRAINT com um DEFAULT VALUE para esta coluna, do tipo DATE ?

    Quando se cria uma tabela e não atribui nenhum DEFAULT VALUE para coluna oque deve ser retornado é NULL, caso não conste valor na mesma, faço o teste você mesmo:

    --DROP TABLE T1
    CREATE TABLE T1
    (
    	ID INT,
    	DATA DATE
    )
    
    INSERT INTO T1 (ID) VALUES (1)
    
    SELECT * FROM T1

    Sera que o erro pode estar na aplicação quando é feito um insert nesta tabela ?

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 1 de outubro de 2012 00:06
  • Jonas não existe nenhuma CONSTRAINT com um DEFAULT VALUE para esta coluna, do tipo DATE ?

    Como vejo isso?

    eu não faço assim o insert

    Faria:

    insert into T1 values (1,'')

    será essa a falha?

    valeu

    segunda-feira, 1 de outubro de 2012 00:52
  • Jonas é justamente este o erro, o insert com aspas simples. Não sei explicar o porque, mais inserindo com aspas simples o SQL converte automaticamente para o default value do tipo date que é 1900-01-01. Tente fazer passando o valor NULL que vai dar certo:

    insert into T1 values (1,NULL)


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 1 de outubro de 2012 01:41
  • Quando você passa vazio ('') para inserção de um campo data, o SQL Server atribui a este campo o valor padrão.

    E a data padrão de qualquer campo data (seja Date, DateTime ou SmallDateTime) é 01-01-1900.

    Se você quiser que o campo fique sem valor, não passa informação alguma para o campo ou passe explicitamente Null.

    No Books OnLine, sobre o campo Date:

    Valor padrão

    1900-01-01


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 1 de outubro de 2012 11:48
    Moderador
  • Com o null funcionou beleza.

    Mas testando o seguinte:

    insert into T1 values (1,NULL,)

    dá este erro:

    Incorrect syntax near ','.

    terça-feira, 16 de outubro de 2012 12:37
  • É porque tem uma vírgula "sobrando" depois da palavra Null.

    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 16 de outubro de 2012 12:44
    Moderador
  • Com o null funcionou beleza.

    Mas testando o seguinte:

    insert into T1 values (1,NULL,)

    dá este erro:

    Incorrect syntax near ','.

    No INSERT que você esta fazendo tem uma virgula a mais:

    Errado:
    insert into T1 values (1,NULL,)

    Certo:
    insert into T1 values (1,NULL)


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    terça-feira, 16 de outubro de 2012 12:44