none
DateTime gravar somente data RRS feed

  • Pergunta

  • Ola Pessoal

     

    tenho um campo na minha tabela do tipo datetime, e quando eu vou salvar alguma informação nele eu queria q somente a hora fosse armazenada, pois mesmo eu digitando somente uma data no campo e mandando salvar ele inserir hora,minuto e seg. tudo zerado

    estava tentado formatar isso, mas a maneira que mais chegou perto seria essa mas ele da erro falando que naum pode ser convertido

    _comando.Parameters.Add("@DATA", Convert.ToDateTime(((TextBox)FormView1.FindControl("txtData")).ToString("dd/MM/yyyy")));<br/><br/>Alguém sabe se tem como?<br/>
    
    domingo, 20 de março de 2011 03:35

Respostas

  • DECLARE @data as DATE
    SET @data = getdate()
    Select @data

    Voce conseguiu rodar o script acima?

    Eu naum estou conseguindo definir meu campo como do tipo Date, so tem datime e smalldatetime, estou usando o sql server 2008

    Na aplicação, se não tiver o tipo DATE, você pode usar o DATETIME. Porém a coluna da sua tabela deve ser do tipo DATE. Apesar de você passar o valor com a data e hora, quando o SQL for gravar a informação na tabela, ele truncará a data e desconsiderará as horas, minutos e segundos. Do mesmo jeito que acontece no script acima.

    Quanto ao fato de não ter o tipo DATE disponível na sua aplicação, tente atualizar o driver de conexão que você está utilizando, talvez isso ajude a resolver o problema.

    Espero que ajude!

     

    • Sugerido como Resposta Eder Costa segunda-feira, 28 de março de 2011 15:35
    • Marcado como Resposta Eder Costa terça-feira, 19 de abril de 2011 16:54
    domingo, 20 de março de 2011 22:49

Todas as Respostas

  • Ax,

     

    No SQL 2008 voce pode utilizar o formtato TIME, porem ele vira com minutos e segundos tambem, se for gravar sómente a hora sem minutos e segundos recomendaria usar tipo int, ou então: SELECT SUBSTRING(CONVERT(VARCHAR,GETDATE(),108),0,3), Utilize essa opção para sql 2005 ou inferiores tambem...


    ------------------------------------------------------------- Oracle OCA11g
    • Sugerido como Resposta Henrique Alberto sexta-feira, 25 de julho de 2014 20:11
    domingo, 20 de março de 2011 04:57
    Moderador
  • mas eu naum preciso de nda de hora,minuto nem segundo queria somente a data, naum existe um tipo fixo que armazene somente ela?

    tipo int naum tem como por causa dos /  / no caso eu so poderia colocar ele como um nchar mesmo correto?

    domingo, 20 de março de 2011 11:06
  • O que eu sugiro é você continuar  gravando DATETIME, e tratar a mascara na apresentação dos dados, pois é possivel que em algum momento você precise da hora.

     

    Para tratar o retorno da data no SQL ,leia isto:

    http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx

    • Sugerido como Resposta Eder Costa terça-feira, 22 de março de 2011 20:42
    domingo, 20 de março de 2011 13:41
  • Se você estiver usando o SQL Server 2008, voce pode usar um campo do tipo DATE.

    Segue exemplo:

    DECLARE @data as DATE
    SET @data = getdate()
    Select @data
    

    Caso seja uma versão anterior, você realmente terá que gravar com a hora, minuto e segundo.

    Uma outra opção é armazenar como texto, o que não é recomendado pois você terá que efetuar a conversão dos valores sempre que precisar pesquisar por um range de datas por exemplo.

    Caso você possua uma versão anterior ao 2008, sugiro que utilize a data com a hora, minuto e segundo(DATETIME ou SMALLDATETIME), e faça o tratamento quando for apresentar a informação para o usuário. Se possuir o 2008, use o tipo DATE.

    Espero que ajude! 

    domingo, 20 de março de 2011 18:29
  • Hmm mas esse,

    DECLARE @data as DATE
    SET @data = getdate()
    Select @data

    Eu declaro isso como uma stored procedure?? e no campo data na minha tabela que valor eu deixo ele para utilizar isso?
    domingo, 20 de março de 2011 18:58
  • O DATE é um tipo de dado assim como o DATETIME. Da mesma forma que você usa o DATETIME você pode usar o DATE. no seu caso, você teria que alterar o parametro de sua PROC (@DATA) do tipo Datetime para DATE. Além disso, teria também que alterar o tipo de dado da coluna que está armazenando este valor, também para DATE.

    Espero que ajude!

    domingo, 20 de março de 2011 19:56
  • Eu naum estou conseguindo definir meu campo como do tipo Date, so tem datime e smalldatetime, estou usando o sql server 2008

    e para gravar estou utilizando uma query

    string _insertStr = "INSERT INTO ORDENS " +
                "(CLIENTEID,DATA,PRESTADORID,SOLICITANTE,DESCRICAO,STATUS,TOTAL) VALUES " +
                " (@CLIENTEID,@DATA,@PRESTADORID,@SOLICITANTE,@DESCRICAO,@STATUS,@TOTAL)";

    domingo, 20 de março de 2011 20:12
  • DECLARE @data as DATE
    SET @data = getdate()
    Select @data

    Voce conseguiu rodar o script acima?

    Eu naum estou conseguindo definir meu campo como do tipo Date, so tem datime e smalldatetime, estou usando o sql server 2008

    Na aplicação, se não tiver o tipo DATE, você pode usar o DATETIME. Porém a coluna da sua tabela deve ser do tipo DATE. Apesar de você passar o valor com a data e hora, quando o SQL for gravar a informação na tabela, ele truncará a data e desconsiderará as horas, minutos e segundos. Do mesmo jeito que acontece no script acima.

    Quanto ao fato de não ter o tipo DATE disponível na sua aplicação, tente atualizar o driver de conexão que você está utilizando, talvez isso ajude a resolver o problema.

    Espero que ajude!

     

    • Sugerido como Resposta Eder Costa segunda-feira, 28 de março de 2011 15:35
    • Marcado como Resposta Eder Costa terça-feira, 19 de abril de 2011 16:54
    domingo, 20 de março de 2011 22:49