SELECT COM DATAS

ALTAIR148 26/03/2012 10:27:01
#398278
Vou ficar lhe devendo essa, me parece que no SQLServerl tem que aplicar alguns parâmetros para realizar essa consulta, e eu não trabalho com SQLServer. Creio que alguns de nossos colegas aqui vão poder lhe ajudar.
THAINE 26/03/2012 10:30:26
#398280
Tudo bem
agradeço sua atenção
ate mais..
CASTELO 26/03/2012 10:36:37
#398281
Ola Thaine,

Não tenho experiência ainda com o Sql Server pois minhas aplicações tão com access, mas assim q tiver tempo vou adotar o sql server.

Mas vou lhe passar minha experiência.
1 - Para o SELECT utilizo da seguinte forma na cláusula de condições.
WHERE FORMAT(TABELA.data,[ô]dd/mm/yyyy[ô]) < [ô] [Ô] & Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] [ô]

Não utilizei operador, mas ao utilizar o operador AND (função de e ), você só terá resposta a sua consulta se todas as condições forem atendidas. Com OR (função de ou ) você dá opção, pois se uma condição atender a sua solicitação haverá resultado.

Além disso utilizo IIF para retornar algumas informações especiais:
SELECT IIF((CONDIÇÃO ou um SELECT MESMO),[Ô]VALOR SE VERDADEIRO[Ô],[Ô]VALOR SE FALSO[Ô]) as CAMPO

Não estou em casa para ver o exemplo enviado acima, mas espero ajudar.

Att.,
Eliseu
THAINE 26/03/2012 13:56:39
#398321
Ajudo sim
porém o meu select

select d.Cod, d.Nome, (case when d.DataNasc>[ô]1899-12-30[ô] then (DAY (d.DataNasc)) else null end) as DataNasc,
d.Esposo,(case when d.DataNascEsposo>[ô]1899-12-30[ô] then (DAY (d.DataNascEsposo)) else null end) as DataNascEsposo,

d.Dependente1,(case when d.DataNasc1>[ô]1899-12-30[ô] then (DAY (d.DataNasc1)) else null end) as DataNasc1,
d.Dependente2,(case when d.DataNasc2>[ô]1899-12-30[ô] then (DAY (d.DataNasc2)) else null end) as DataNasc2,
d.Dependente3,(case when d.DataNasc3>[ô]1899-12-30[ô] then (DAY (d.DataNasc3)) else null end) as DataNasc3,
m.Descricao

from Dizimistas as d
inner join Missa as m on d.CodMissa=m.Cod where
(DAY (d.DataNasc))between 01 and 7 or
(DAY (d.DataNascEsposo)) between 01 and 15 or
(DAY (d.DataNasc1)) between 01 and 15 or
(DAY (d.DataNasc2)) between 01 and 15 or
(DAY (d.DataNasc3)) between 01 and 15

não filtra os dias, ele exibe todos os registros
Alguem tem alguma ideia do q pode estar errado?
MARCELO.TREZE 26/03/2012 15:31:54
#398331
tente assim

select d.Cod, d.Nome, d.DataNasc, d.Dependente1, d.DataNasc1, d.Dependente2,
d.Esposo, d.DataNascEsposo, d.DataNasc2, d.Dependente3, d.DataNasc3,m.Descricao
from Dizimistas as d
inner join Missa as m on d.CodMissa=m.Cod where
((DAY (d.DataNasc) between 01 and 05) And (MONTH(d.DataNasc) = 1)) Or
((day (d.DataNasc1) between 01 and 05) And (MONTH(d.DataNasc1) = 1)) Or
((day (d.DataNasc2) between 01 and 05) And (MONTH(d.DataNasc2)) = 1)) Or
((day (d.DataNasc3) between 01 and 05) And (MONTH(d.DataNasc3)) = 1)) Or
((day (d.DataNascEsposo) between 01 and 11) And (MONTH(d.DataNascEsposo) between 01 and 06))



tente ai

THAINE 26/03/2012 16:48:57
#398337
MARCELO-TREZE eu tentei desse jeito que voce me passou.. e add o between porem..
ele ainda exibe uma data nada a ve com o periodo escolhido

((DAY (d.DataNasc) between 01 and 05) And (MONTH(d.DataNasc) between 01 and 05)) Or
((DAY (d.DataNascEsposo)) between 01 and 15 And (MONTH(d.DataNascEsposo) between 01 and 05)) Or
((DAY (d.DataNasc1)) between 01 and 15 And (MONTH(d.DataNasc1) between 01 and 05)) Or
((DAY (d.DataNasc2)) between 01 and 15 And (MONTH(d.DataNasc2)between 01 and 05)) Or
((DAY (d.DataNasc3)) between 01 and 15And (MONTH(d.DataNasc3)between 01 and 05))
MARCELO.TREZE 26/03/2012 17:25:08
#398342
Resposta escolhida
BOM VEJA COM ESTA ALTERAÇÃO


((DAY (d.DataNasc) between 01 and 05) And (MONTH(d.DataNasc) between 01 and 05)) Or
((DAY (d.DataNascEsposo) between 01 and 15) And (MONTH(d.DataNascEsposo) between 01 and 05)) Or
((DAY (d.DataNasc1) between 01 and 15) And (MONTH(d.DataNasc1) between 01 and 05)) Or
((DAY (d.DataNasc2) between 01 and 15) And (MONTH(d.DataNasc2) between 01 and 05)) Or
((DAY (d.DataNasc3) between 01 and 15) And (MONTH(d.DataNasc3) between 01 and 05))


bom eu só coloquei alguns parenteses nos lugares corretos teste

THAINE 27/03/2012 08:58:09
#398378
MARCELO-TREZE
continua com o mesmo erro..

agora estou tentando colocar uma condição para cada data
exists (select (DAY (d.DataNasc)) where (DAY (d.DataNasc))>=01 and (DAY (d.DataNasc))<=15)
se existir ele retorna e se não existir, como faço para retornar nulo?
THAINE 27/03/2012 11:33:45
#398389
Ate que enfim consigui

aqui está o codigo pra quem se interessa


if exists
(Select (DAY(d.DataNasc)),(month(d.DataNasc)), d.Nome, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where (DAY(d.DataNasc))>=01 and (DAY(d.DataNasc))<=30 and (month(d.DataNasc))>=01 and (month(d.DataNasc))<=12)
begin
(Select d.DataNasc , d.Nome , m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa where(DAY(d.DataNasc))>=01 and (DAY(d.DataNasc))<=30 and (month(d.DataNasc))>=01 and (month(d.DataNasc))<=12)
end

if exists
(Select (DAY(d.DataNascEsposo)),(month(d.DataNascEsposo)), d.Esposo, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where (DAY(DataNascEsposo))>=01 and (DAY(DataNascEsposo))<=30 and (month(d.DataNascEsposo))>=01 and (month(d.DataNascEsposo))<=12)
begin
(Select (case when d.DataNascEsposo>[ô]1899-12-30[ô] then d.DataNascEsposo else null end) as DataNascEsposo , d.Esposo , m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where(DAY(d.DataNascEsposo))>=01 and (DAY(d.DataNascEsposo))<=30 and (Month(d.DataNascEsposo))>=01 and (Month(d.DataNascEsposo))<=12)
end

if exists
(Select (DAY(d.DataNasc1)),(month(d.DataNasc1)), d.Dependente1, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa where (DAY(d.DataNasc1))>=01 and (DAY(d.DataNasc1))<=30 and (month(d.DataNasc1))>=01 and (month(d.DataNasc1))<=12)
begin
(Select (case when d.DataNasc1>[ô]1899-12-30[ô] then d.DataNasc1 else null end) as DataNasc1, d.Dependente1, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where(DAY(d.DataNasc1))>=01 and (DAY(d.DataNasc1))<=30 and (month(d.DataNasc1))>=01 and (month(d.DataNasc1))<=12)
end

if exists
(Select (DAY(d.DataNasc2)),(Month(d.DataNasc2)), d.Dependente2, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa where(DAY(d.DataNasc2))>=01 and (DAY(d.DataNasc2))<=15 and (Month(d.DataNasc2))>=01 and (Month(d.DataNasc2))<=05)
begin
(Select (case when d.DataNasc2>[ô]1899-12-30[ô] then d.DataNasc2 else null end)as DataNasc2 , d.Dependente2 , m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where (DAY(d.DataNasc2))>=01 and (DAY(d.DataNasc2))<=30 and (Month(d.DataNasc2))>=01 and (Month(d.DataNasc2))<=12)
end

if exists
(Select (DAY(d.DataNasc3)),(Month(d.DataNasc3)), d.Dependente3, m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where (DAY(d.DataNasc3))>=01 and (DAY(d.DataNasc3))<=30 and (Month(d.DataNasc3))>=01 and (Month(d.DataNasc3))<=12)
begin
(Select (case when d.DataNasc3>[ô]1899-12-30[ô] then d.DataNasc3 else null end) as DataNasc3 , d.Dependente3 , m.Descricao from Dizimistas as d inner join Missa as m on m.Cod=d.CodMissa
where (DAY(DataNasc3))>=01 and (DAY(DataNasc3))<=30 and (Month(d.DataNasc3))>=01 and (Month(d.DataNasc3))<=12)
end

Página 2 de 2 [19 registro(s)]
Tópico encerrado , respostas não são mais permitidas