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

No estou conseguindo fazer essa situao no C#
Essa string abaixo ir para o Where do SQL Server mas no funciona.
Quero que a.AluDataNascimento esteja entre AluDataNascimentoIni1 e AluDataNascimentoFim1 que esto 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 fao 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 Orculo!
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 condio para fechar o where tipo cdigo diferente de NULL ou qualquer coisa que no interfira no resultado..
depois coloco na query  atravs  do string.Format(sql, MontaWhere1)
No entendi o teu where o que tem haver com datetime.

No VB.NET eu fao assim e funciona 100% com ou sem contenao:
MontaWhere1 = MontaWhere1 + []a.AluDataNascimento >= [][] + Format(CDate(mskAluDataNascimentoInicio.Text), []MM/dd/yyyy[]) + [][] And
                                                      a.AluDataNascimento <= [][] + Format(CDate(mskAluDataNascimentoFim.Text), []MM/dd/yyyy[]) + [][] And []
Apenas no 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 invs 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