Usuário com melhor resposta
Ajuda Data

Pergunta
-
Amigos,
tenho um processo onde tenho que realizar um Between entre a primeira data que não irá sofrer alteração e uma segunda data que esse sim terá que ser alterada todo mês, ou seja, uma unica vez por mês eu tenho que executar esse processo e alterar a data final para o ultimo dia do mês anterior. Ou seja se eu estou no mês de set/08 a data final deverá ser 31/08/2008.
Como faço para deixar esse processo automático, ou seja, não precisar entrar mais no processo para alterar essa data.
Minha consulta é:
Select *
From
D_Camara_Analitica_FinalWhere
dt_Inclusao Between '2007-10-01' and '2008-08-31' and (Dt_Saida > '2008-08-31' or Dt_Saida is null) and (Dt_Decurso > '2008-08-31' or Dt_Decurso is null)
Respostas
Todas as Respostas
-
-
Amigo,
pelo que entendi pode pode fazer o seguinte, pegar um dia antes do primeiro dia do mês, dessa forma não importa a data. Assim:
select
convert(smalldatetime, '01/'+ convert(varchar, month(Getdate())) + '/' + convert(varchar, year(Getdate())),103)-1coloque isso no lugar da data limite, essa função vai pegar o primeiro dia do mês anterior... vc ainda pode transformar isso numa função e passar como parâmetro a data, neste caso eu usei a data atual "getdate()"
Abraço
-
-
Bom Dia,
Segue uma proposta. Você pode armazenar previamente o valor em uma variável se for o caso.
Code SnippetSelect
*From
D_Camara_Analitica_FinalWhere
dt_Inclusao Between '20071001' and DATEADD(DD,-DAY(GETDATE()),CAST(CONVERT(CHAR(10),GETDATE(),112) AS SMALLDATETIME))and
(Dt_Saida > DATEADD(DD,-DAY(GETDATE()),CAST(CONVERT(CHAR(10),GETDATE(),112) AS SMALLDATETIME)) or Dt_Saida is null)and
(Dt_Decurso > DATEADD(DD,-DAY(GETDATE()),CAST(CONVERT(CHAR(10),GETDATE(),112) AS SMALLDATETIME)) or Dt_Decurso is null)Recomendo não trabalhar com datas no formato YYYY-MM-DD. Elas são vulneráveis a configurações. Opte pelo formato YYYYMMDD que não lhe dará dores de cabeça.
[ ]s,
Gustavo
-
-
-
-