none
Formato da data na bd RRS feed

  • Pergunta

  • Boas

    Tenho as seguintes datas.

    Resultado no form:

    12-01-2012 15:29

    Resultado na base de dados:

    2012-01-12 15:29:52.247

     

    Como faço para gravar na bd o mesmo formato que vejo no form?

    A data é gravada na bd através do comando:

     

    command.Parameters.Add("@dataregisto", SqlDbType.DateTime).Value = DateTime.Now

    Obrigado

    quinta-feira, 12 de janeiro de 2012 16:51

Respostas

  • Bom Dia,

    Para esse tipo de operação, você pode utilizar o DATEADD. Ex:

    DECLARE @Horario TIME(0)
    SET @Horario = '15:00:00'
    SELECT DATEADD(MI,9,@Horario)

    Sobre separar a data da hora, é algo relativo. Se você sempre irá armazenar a data e a hora que algum evento aconteceu, e a pesquisa será sempre por data e hora ou só por data, não compensa separá-los (você gastará mais espaço). É apenas uma forma de ajustar a forma de consulta para ficar mais "versátil"

    Eu só criaria duas colunas (uma para data e uma para hora), se eu fosse pesquisar somente por hora ou se a data fosse algo opcional e a hora obrigatório (embora seja difícil de imaginar essa situação)

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 13 de janeiro de 2012 11:56

Todas as Respostas

  • Boa Noite,

    Você simplesmente não pode. Como o banco armazena é algo proprietário e você não terá nenhum controle sobre isso. A título de curiosidade, o banco sequer armazena a data 12-01-2012 15:29 como 2012-01-12 15:29:52.247, muito embore mostre a data assim para você. Essa data será armazenada com oito bytes de dados, respectivamente 94243 e 55792246. O primeiro número representa a quantidade de dias de 01/01/1753 até 12/01/2012 e o segundo a quantidade de milissegundos de 00:00 até 15:29:52.247. É desse forma que é armazenado e não há como trocá-la, pois, o SGDB considera que essa é a forma mais eficiente de fazê-lo.

    O formato 2012-01-12 15:29:52.247 está sendo exibido assim, porque a ferramenta que você consultou foi o SSMS. Da mesma forma que o SSMS opta por esse formato, sua aplicação opta por 12-01-2012 15:29. São apenas formatos de aplicações distintas, mas no banco de dados, nenhuma dessas é o que está sendo realmente armazenado.

    Não se trata de mudar a forma de armazenamento, apenas saber como lidar com operações com datas e exibí-las no formato desejado.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 12 de janeiro de 2012 21:39
  • Humm interessante:) Obrigado pela explicação.

     

    Uma curiosidade.

    Como terei que fazer os seguintes calculos?

    15:00:00 + 9 minutos

    Posso ir buscar o valor das horas á base de dados e somar mais 9 minutos?

    Como fazo isso?

    Uma coisa ja aprendi, para a bd ser mais versatil terei que criar uma coluna para datas e horas, assim posso trabalahr com as duas.

     

    Obrigado

    sexta-feira, 13 de janeiro de 2012 09:55
  • Bom Dia,

    Para esse tipo de operação, você pode utilizar o DATEADD. Ex:

    DECLARE @Horario TIME(0)
    SET @Horario = '15:00:00'
    SELECT DATEADD(MI,9,@Horario)

    Sobre separar a data da hora, é algo relativo. Se você sempre irá armazenar a data e a hora que algum evento aconteceu, e a pesquisa será sempre por data e hora ou só por data, não compensa separá-los (você gastará mais espaço). É apenas uma forma de ajustar a forma de consulta para ficar mais "versátil"

    Eu só criaria duas colunas (uma para data e uma para hora), se eu fosse pesquisar somente por hora ou se a data fosse algo opcional e a hora obrigatório (embora seja difícil de imaginar essa situação)

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 13 de janeiro de 2012 11:56