none
Formato de data RRS feed

  • Pergunta

  • Bom dia pessoal, gostaria de saber se alguém sabe me dizer porque não funciona a funçao date no sqlmobile?

    Por exemplo:
    "SELECT CAMPO FROM TABELA WHERE DAY(CAMPO_DATA)=" + DateTime.Now.Day;

    Também tentei com:
    "SET DATEFORMAT DMY SELECT CAMPO FROM TABELA WHERE CAMPO_DATA=" + DateTime.Now.Date;

    Nos dois casos dá erro.

    Tenho a leve impressão de que um tempo atrás isso funcionou num teste que fiz...Sad

    Estou usando C# e sql compact edition 3.5 no windows mobile 5.0.

    Qualquer dica é bem-vinda, pois não sei mais o que ver.

    Obrigado,
    Márcio.
    terça-feira, 1 de julho de 2008 14:47

Todas as Respostas

  • utilize este formato caso queira fazer uma verificação na base de dados

     

    string select = string.Format(

    "select CAMPO from TABELA where Convert(nvarchar(10),CampoDaTabela,103) ={0} ",DateTime.Now.ToString("dd/MM/yyyy"))

     

    vc pode utilizar o "ExecuteScalar"  caso queira fazer uma consistencia!

     

    espero ter ajudado

    terça-feira, 1 de julho de 2008 17:27
  • Agles,
    gostaria de saber porque nvarchar(10)? Assim está dando erro. Se mudo para Convert(datetime,CampoDaTabela,103) não dá erro, mas não traz o resultado.

    Obrigado pela ajuda.
    Márcio.
    terça-feira, 1 de julho de 2008 19:43
  • Ok Marcio

    Então tente fazer desta forma convertendo para  NVarchar(10) não somente o CAMPO DA TABELA mas tambem o PARAMETRO que esta sendo enviardo que neste caso é a data atual.

     

    string select = string.Format("select CAMPO from TABELA where Convert(nvarchar(10),CampoDaTabela,103) = Convert(nvarchar(10),'{0}',103)",DateTime.Now.ToString("dd/MM/yyyy"))

     

    O porque do Nvarchar(10)

     

    No compact SQL existe algumas limitações, pois por enquanto ele ainda nao é capaz de ter a mesma praticidade de um SQL Server da vida, então devemos enchergar algumas quary de forma simples.

     

    por exemplo: DateTime.Now.ToString("dd/MM/yyyy"))                                                         

                                                           

    perceba que dentro do parentes, eu tenho 10 caracteres.

    o comando que vc esta passando é um SELECT, logo este SELECT terá que retornar alguma coisa, e qualquer coisa que é retornado na tela do dispositivo deve ser convertido para ToString. por isso que convertemos a Data para Nvarchar(10) que ao invez do conteudo ser do tipo Date  passará a ser do tipo String.

    Mas isto é somente na execução do Select. vc poderá continua armazenado normalmente as datas no campo do tipo DateTime

     

    bom perdoe-me se eu nao consegui ter sido claro nesta explicação mas espero ter ajudado

     

    Ate + amigão

    quarta-feira, 2 de julho de 2008 11:43
  • Obrigado Agles.
    Entendi sim.

    Só ajustei umas coisas mas funcionou perfeitamente dentro da sua idéia.

    Abração.
    Márcio.
    sexta-feira, 4 de julho de 2008 12:03
  • Estou reaproveitando esse tópico para ver se alguém pode me ajudar num problema parecido ao anterior....

    A dica do amigo Agles foi genial. Me ajudou muito naquele momento em que podia comparar um nvachar, pois a data era única para aquele dia e daí tem como comparar string com string.

    Só que agora preciso buscar data  mesmo. Preciso buscar as datas anteriores ao dia e hora atual (data <= datetime.now). Nesse momento string não tem como usar menor igual ( <= ). Só que estou tentando de várias formas possíveis de usar no formato que o Agles sugeriu, diretamente com o campo DateTime.Now, etc....

    Qualquer ajuda é bem-vinda.

    Obrigado,

    sexta-feira, 22 de agosto de 2008 21:02