none
Duvida na na conversao de data RRS feed

  • Pergunta

  • bom dia,

    tenho um campo em minha tabela com o nome de Inicio do dipo DateTime, estou tentando fazer uma consulta nos registros ultilizando esse campo com paramentro mas nao estou tendo sucesso.

    quando graem no banco ele grava no seguinte formato : yyyy-mm-dd hh:mi:ms:mmm,

    estou fazendo uma consulta dessa forma:

    select * from tabela where inicio between convert(varchar, '05/08/2011 09:15:00') and convert(varchar, '05/08/2011 10:30:00'), sendo que na tabela existe registro entre esse periodo onde esta o erro ?

     

    terça-feira, 16 de agosto de 2011 14:30

Respostas

  • Deleted
    • Marcado como Resposta Eder Costa segunda-feira, 22 de agosto de 2011 17:59
    terça-feira, 16 de agosto de 2011 14:48
  • Boa Tarde,

    Na minha opinião, caso você não queira ter qualquer dor de cabeça com datas, use o formato yyyymmdd hh:mm:ss (sem hífens). Esse formato vai lhe deixar imune a problemas de configuração (Default Language) e não lhe obriga a usar configurações como SET DATEFORMAT. O SET DATEFORMAT embora pareça ser uma boa idéia, ele provoca uma recompilação de SP desnecessário e por isso não recomendo o uso.

    Se você colocar a data como 20110805 09:15 irá funcionar perfeitamente. Só é preciso colocar entre aspas e nem o CONVERT com VARCHAR é necessário (o que também é muito ruim, pois, a precedência de tipos irá converter a coluna Inicio ignorando índices úteis e introduzindo SCANs na sua consulta).

    [ ]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
    • Sugerido como Resposta Eder Costa quinta-feira, 18 de agosto de 2011 14:51
    • Marcado como Resposta Eder Costa segunda-feira, 22 de agosto de 2011 17:59
    terça-feira, 16 de agosto de 2011 15:20

Todas as Respostas

  • bom dia,

    tenho um campo em minha tabela com o nome de Inicio do dipo DateTime, estou tentando fazer uma consulta nos registros ultilizando esse campo com paramentro mas nao estou tendo sucesso.

    quando graem no banco ele grava no seguinte formato : yyyy-mm-dd hh:mi:ms:mmm,

    estou fazendo uma consulta dessa forma:

    select * from tabela where inicio between convert(varchar, '05/08/2011 09:15:00') and convert(varchar, '05/08/2011 10:30:00'), sendo que na tabela existe registro entre esse periodo onde esta o erro ?

     


    OBS: esta retornado vazio, mas existe sim registro nesse periodo.
    terça-feira, 16 de agosto de 2011 14:31
  • Deleted
    • Marcado como Resposta Eder Costa segunda-feira, 22 de agosto de 2011 17:59
    terça-feira, 16 de agosto de 2011 14:48
  • Boa Tarde,

    Na minha opinião, caso você não queira ter qualquer dor de cabeça com datas, use o formato yyyymmdd hh:mm:ss (sem hífens). Esse formato vai lhe deixar imune a problemas de configuração (Default Language) e não lhe obriga a usar configurações como SET DATEFORMAT. O SET DATEFORMAT embora pareça ser uma boa idéia, ele provoca uma recompilação de SP desnecessário e por isso não recomendo o uso.

    Se você colocar a data como 20110805 09:15 irá funcionar perfeitamente. Só é preciso colocar entre aspas e nem o CONVERT com VARCHAR é necessário (o que também é muito ruim, pois, a precedência de tipos irá converter a coluna Inicio ignorando índices úteis e introduzindo SCANs na sua consulta).

    [ ]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
    • Sugerido como Resposta Eder Costa quinta-feira, 18 de agosto de 2011 14:51
    • Marcado como Resposta Eder Costa segunda-feira, 22 de agosto de 2011 17:59
    terça-feira, 16 de agosto de 2011 15:20