Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucio KrioK

Comparando datas em 1 job

Recommended Posts

Galera,

seguinte eu tenho 1 campo no banco de dados q se chama Acesso e recebe valor de 0 até 2, determinando o tipo de acesso do usuário, e eu tenho outros 2 campos do bd q se chamam DataI e DataF, DataI é o campo eu determino quando eu coloquei o tipo de acesso para o usuário e o DataF é quando o usuário irá perder aquele tipo de acesso. Ambos os campos estao no formatao dd/mm/aaaa

 

O que eu quero:

bom tenho algumas práticas no SQL, mas tem certas coisas q na parte de liganguem SQL não sei nada... entao eu estava precisando que um job diário (job eu sei como cria, nao sei fazer a função ^^) fizesse a seguinte o operação:

* receber 1 variável com a data do dia no formato dd/mm/aaaa

* comparasse a DataF com a data da variável citada acima

* se as datas forem iguais o compo Acesso recebe 0

isso em tds as contas q estao no banco de dados

 

sei q o negócio é facil, mas não sei fazer hueheuehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser em varchar mesmo o campo, nao precisa ser datetime, é so para fazer verificação, se tivesse como fazer assim a data do job@dia = funcao q pega dia@mes = funcao q pega mes@ano = funcao q pega ano@datajob = @dia/@mes/@ano

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha o q eu achei galera, vai ajudar muita gente

 

a string pro formato de data é:

/* Este script permite criar a função dbo.fn_dateformat a qual possibilita a formatação de uma data em até 12 formatos diferentes.Coloque o script sobre o Query Analyzer e execute o script na base de dados onde deseja que a função seja criada.OBS: Se desejar, use este script como um template para desenvolver sua própria função.*/USE PUBSGOIF EXISTS (SELECT [name] FROM sysobjects WHERE id = object_id('dbo.fn_dateformat') and xtype='FN')	DROP FUNCTION dbo.fn_dateformatGOCREATE FUNCTION dbo.fn_dateformat (@data smalldateTime, @formato int)/***************************************************************************Esta função permite formatar uma data em um dos formatos abaixo.Parâmetros:@data - data a ser formatada@formato - determina o formato de saída para a dataOpções de formato:	1 - dia/mes/ano		->> 31/08/2005 (Default)	2 - dia-mes-ano		->> 31-08-2005		3 - Somente dia		->> 31	4 - Somente Mês		->> 08	5 - Somente Ano		->> 2005	6 - mes/dia/ano		->> 08/31/2005	7 - mes-dia-ano		->> 08-31-2005	8 - Formato Longo 	->> 31 de Agosto de 2005	9 - Formato Curto 	->> 31-Agosto-2005	10 - Mês/Ano	 	->> Agosto/2005	11 - Mês/Ano	 	->> 08/2005	12 - Dia/Hora	 	->> 31-08-2005 13:14Exemplo:SELECT dbo.fn_dateformat(getdate(),1) as [dia/mes/ano]		SELECT dbo.fn_dateformat(getdate(),10) as [Mes/Ano]		SELECT dbo.fn_dateformat(getdate(),12) as [Dia/Hora]*******************************************************************************/-- Retorna data como stringRETURNS nvarchar(20)ASBEGIN	DECLARE @Datafmt nvarchar(20)	-- Verifica se a data é válida	IF @data Is Null SET @Datafmt = ''	-- dia-mes-ano			ELSE IF @formato = 2		BEGIN			IF Day(@data) < 10 				SET @Datafmt = '0' + Convert(varchar(2), Day(@data))			ELSE 				SET @Datafmt = Convert(varchar(2),Day(@data))			SET @Datafmt = @Datafmt + '-'			-- concatena o mes			IF Month(@data) < 10 				SET @Datafmt = (@Datafmt + '0' + Convert(varchar(2), Month(@data)))			ELSE 				SET @Datafmt = (@Datafmt + Convert(varchar(2), Month(@data)))			SET @Datafmt = @Datafmt + '-'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- somente dia	ELSE IF @formato = 3		BEGIN						IF Day(@data) < 10 				SET @Datafmt = ('0' + CONVERT(varchar(2), Day(@data)))			ELSE 				SET @Datafmt = (Convert(varchar(2), Day(@data)))		END	-- somente mês	ELSE IF @formato = 4		BEGIN						IF Month(@data) < 10 				SET @Datafmt = '0' + Convert(varchar(2), Month(@data))			ELSE 				SET @Datafmt = Convert(varchar(2), Month(@data))		END	-- somente Ano	ELSE IF @formato = 5		BEGIN			SET @Datafmt = (SELECT Convert(varchar(4), Year(@data)))		END	-- mes/dia/ano	ELSE IF @formato = 6		BEGIN			IF Month(@data) < 10 				SET @Datafmt = '0' + Convert(varchar(2), Month(@data))			ELSE 				SET @Datafmt = Convert(varchar(2), Month(@data))			SET @Datafmt = @Datafmt + '/'			-- concatena o dia			IF Day(@data) < 10 				SET @Datafmt = (@Datafmt + '0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt = (@Datafmt + Convert(varchar(2), Day(@data)))			SET @Datafmt = @Datafmt + '/'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- mes-dia-ano	ELSE IF @formato = 7		BEGIN			IF Month(@data) < 10 				SET @Datafmt = '0' + Convert(varchar(2), Month(@data))			ELSE 				SET @Datafmt = Convert(varchar(2), Month(@data))			SET @Datafmt = @Datafmt + '-'			-- concatena o dia			IF Day(@data) < 10 				SET @Datafmt = (@Datafmt + '0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt = (@Datafmt + Convert(varchar(2), Day(@data)))			SET @Datafmt = @Datafmt + '-'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- Formato Longo	ELSE IF @formato = 8		BEGIN			IF Day(@data) < 10 				SET @Datafmt = ('0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt =  Convert(varchar(2), Day(@data))			SET @Datafmt = @Datafmt + ' de '			-- concatena o mês			SET @Datafmt = @Datafmt + CASE Month(@data)				WHEN 1 THEN 'Janeiro'				WHEN 2 THEN 'Fevereiro'				WHEN 3 THEN 'Março'				WHEN 4 THEN 'Abril'				WHEN 5 THEN 'Maio'				WHEN 6 THEN 'Junho'				WHEN 7 THEN 'Julho'				WHEN 8 THEN 'Agosto'				WHEN 9 THEN 'Setembro'				WHEN 10 THEN 'Outubro'				WHEN 11 THEN 'Novembro'				ELSE 'Dezembro'				END					SET @Datafmt = @Datafmt + ' de '			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- Formato Curto	ELSE IF @formato = 9		BEGIN			IF Day(@data) < 10 				SET @Datafmt = ('0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt =  Convert(varchar(2), Day(@data))			SET @Datafmt = @Datafmt + '-'			-- concatena o mês			SET @Datafmt = @Datafmt + CASE Month(@data)				WHEN 1 THEN 'Janeiro'				WHEN 2 THEN 'Fevereiro'				WHEN 3 THEN 'Março'				WHEN 4 THEN 'Abril'				WHEN 5 THEN 'Maio'				WHEN 6 THEN 'Junho'				WHEN 7 THEN 'Julho'				WHEN 8 THEN 'Agosto'				WHEN 9 THEN 'Setembro'				WHEN 10 THEN 'Outubro'				WHEN 11 THEN 'Novembro'				ELSE 'Dezembro'				END					SET @Datafmt = @Datafmt + '-'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- mês/ano	ELSE IF @formato = 10		BEGIN						SET @Datafmt = CASE Month(@data)				WHEN 1 THEN 'Janeiro'				WHEN 2 THEN 'Fevereiro'				WHEN 3 THEN 'Março'				WHEN 4 THEN 'Abril'				WHEN 5 THEN 'Maio'				WHEN 6 THEN 'Junho'				WHEN 7 THEN 'Julho'				WHEN 8 THEN 'Agosto'				WHEN 9 THEN 'Setembro'				WHEN 10 THEN 'Outubro'				WHEN 11 THEN 'Novembro'				ELSE 'Dezembro'				END					SET @Datafmt = @Datafmt + '/'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- mm/yyyy	ELSE IF @formato = 11			BEGIN			IF Month(@data) < 10 				SET @Datafmt = '0' + Convert(varchar(2), Month(@data))			ELSE 				SET @Datafmt = Convert(varchar(2), Month(@data))			SET @Datafmt = @Datafmt + '/'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		END	-- dd/mm/yyyy hh:mm (24h)	ELSE IF @formato = 12			BEGIN			IF Day(@data) < 10 				SET @Datafmt = ('0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt =  Convert(varchar(2), Day(@data))			SET @Datafmt = @Datafmt + '/'			-- concatena o mes			IF Month(@data) < 10 				SET @Datafmt = (@Datafmt + '0' + Convert(varchar(2), Month(@data)))			ELSE 				SET @Datafmt = (@Datafmt + Convert(varchar(2), Month(@data)))			SET @Datafmt = @Datafmt + '/'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))						-- concatena a hora			SET @Datafmt = @Datafmt + ' ' + (SELECT Convert(varchar(5), @data,114))		END	-- dd/mm/yyyy (Default) = 1	ELSE		BEGIN			IF Day(@data) < 10 				SET @Datafmt = ('0' + Convert(varchar(2), Day(@data)))			ELSE 				SET @Datafmt =  Convert(varchar(2), Day(@data))			SET @Datafmt = @Datafmt + '/'			-- concatena o mes			IF Month(@data) < 10 				SET @Datafmt = (@Datafmt + '0' + Convert(varchar(2), Month(@data)))			ELSE 				SET @Datafmt = (@Datafmt + Convert(varchar(2), Month(@data)))			SET @Datafmt = @Datafmt + '/'			-- concatena o ano			SET @Datafmt = @Datafmt + (SELECT Convert(varchar(4), Year(@data)))		ENDRETURN(@Datafmt)ENDGO

lá em cima tira o USE PUBS e coloca a DB q você quer usar a função

para pegar o valor da data nos formatos faça:SELECT dbo.fn_dateformat(getdate(), 1)

SELECT dbo.fn_dateformat(getdate(), 2)

SELECT dbo.fn_dateformat(getdate(), 3)

SELECT dbo.fn_dateformat(getdate(), 4)

SELECT dbo.fn_dateformat(getdate(), 5)

SELECT dbo.fn_dateformat(getdate(), 6)

SELECT dbo.fn_dateformat(getdate(), 7)

SELECT dbo.fn_dateformat(getdate(), 8)

SELECT dbo.fn_dateformat(getdate(), 9)

SELECT dbo.fn_dateformat(getdate(), 10)

SELECT dbo.fn_dateformat(getdate(), 11)

SELECT dbo.fn_dateformat(getdate(), 12)

 

ainda é possível criar outros formatos, você pode criar com isso aí o formato dd/Mes/aaaa

PS.: como eu não sei se é permitido postar link de outros forums eu nao coloquei, mas se os Moderadores me permitirem eu posto o link da fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.