WHERE COM INTERVALO ENTRE DATAS NO SQLSERVER EM C#

 Tópico anterior Próximo tópico Novo tópico

WHERE COM INTERVALO ENTRE DATAS NO SQLSERVER EM C#

C#

 Compartilhe  Compartilhe  Compartilhe
#492082 - 05/01/2020 15:40:42

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 05/01/2020 15:45:46 por JCM0867

Olá pessoal

Não estou conseguindo fazer essa situação no C#
Essa string abaixo irá para o Where do SQL Server mas não funciona.
Quero que a.AluDataNascimento esteja entre AluDataNascimentoIni1 e AluDataNascimentoFim1 que estão no formato datetime
Só que o formato da data em AluDataNascimentoIni1 e AluDataNascimentoFim1 tem que ser "MM/dd/yyyy" para que o sql server entenda
Como faço corretamente?
...
MontaWhere1 = MontaWhere1 + "a.AluDataNascimento >= '" + AluDataNascimentoIni1.ToShortDateString() + "' And
                                                      a.AluDataNascimento <= '" + AluDataNascimentoFim1.ToShortDateString()  + "' And "
+
...
sql = string.Format(sql, MontaWhere1)

O a.AluDataNascimento está no formato dd/MM/yyyy

grato




#492083 - 05/01/2020 15:51:49

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Esse é o problema de fazer queries concatenando. No seu caso, você vai terminar com um "AND", mais ou menos assim:

select bla bla from tabela where a = '99999' and b = '99999' and


_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#492086 - 05/01/2020 22:53:20

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 05/01/2020 23:03:04 por JCM0867

O MontaWhere1 = MontaWhere1 + ...
continua...
Na verdade é um filtro dependendo do que for selecionado para filtrar ele vai montando o Where
No final ele coloca mais uma condição para fechar o where tipo código diferente de NULL ou qualquer coisa que não interfira no resultado..
depois coloco na query  através  do string.Format(sql, MontaWhere1)
Não entendi o teu where o que tem haver com datetime.

No VB.NET eu faço assim e funciona 100% com ou sem contenação:
MontaWhere1 = MontaWhere1 + "a.AluDataNascimento >= '" + Format(CDate(mskAluDataNascimentoInicio.Text), "MM/dd/yyyy") + "' And
                                                      a.AluDataNascimento <= '" + Format(CDate(mskAluDataNascimentoFim.Text), "MM/dd/yyyy") + "' And "
Apenas não consegui transformar em C#. a dificuldade foi no MM/dd/yyyy




#492089 - 06/01/2020 10:29:36

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Achei,

MontaWhere1 = MontaWhere1 + "(a.AluDataNascimento Between '" + Convert.ToDateTime(AluDataNascimentoIni1).ToString("MM/dd/yyyy") + "' And '" +
                                                                                                                Convert.ToDateTime(AluDataNascimentoFim1).ToString("MM/dd/yyyy") + "') And ";

Ao invés de eu procurar a resposta no C# procurava no SQL Server... dããã pra mim

grato



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 06/01/2020 10:29:47