Dias da semana

07/03/2019

0

Estou com uma dúvida até simples, eu preciso retornar os dias da semana atual. Por exemplo, hoje é quarta-feira 05 preciso utilizar uma função já existente ou criar uma que retorne os dias anteriores até o domingo que é o primeiro dia da semana, ou seja, 04,03,02). Alguém sabe algum função nativa ou alguém já possui função pronta que possa compartilhar?
Chromusmaster

Chromusmaster

Responder

Post mais votado

07/03/2019

Boa tarde! No Sql tem a função DATEPART, que retorna um inteiro que representa o datepart especificado do argumento date especificado.

Quando datepart é week (wk, ww) ou weekday (dw), o valor retornado DATEPART depende do valor definido usando SET DATEFIRST.

1º de janeiro de qualquer ano define o número inicial para o weekdatepart. Por exemplo:
DATEPART (wk, 'Jan 1, xxxx') = 1
em que xxxx é qualquer ano.

Esta tabela mostra o valor retornado para week e weekday datepart para '2007-04-21' para cada argumento SET DATEFIRST.

1º de janeiro de 2007 cai em uma segunda-feira. 21 de abril de 2007 cai em um sábado.

Para o Inglês (Estados Unidos), SET DATEFIRST 7 -- ( Sunday ) funciona como o padrão. Depois de definir DATEFIRST, use essa instrução SQL sugerida para os valores da tabela datepart:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')

Espero ter ajudado!

Ana Lichirgu

Ana Lichirgu
Responder

Mais Posts

07/03/2019

Chromusmaster

Boa tarde! No Sql tem a função DATEPART, que retorna um inteiro que representa o datepart especificado do argumento date especificado.

Quando datepart é week (wk, ww) ou weekday (dw), o valor retornado DATEPART depende do valor definido usando SET DATEFIRST.

1º de janeiro de qualquer ano define o número inicial para o weekdatepart. Por exemplo:
DATEPART (wk, 'Jan 1, xxxx') = 1
em que xxxx é qualquer ano.

Esta tabela mostra o valor retornado para week e weekday datepart para '2007-04-21' para cada argumento SET DATEFIRST.

1º de janeiro de 2007 cai em uma segunda-feira. 21 de abril de 2007 cai em um sábado.

Para o Inglês (Estados Unidos), SET DATEFIRST 7 -- ( Sunday ) funciona como o padrão. Depois de definir DATEFIRST, use essa instrução SQL sugerida para os valores da tabela datepart:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')

Espero ter ajudado!

Ajudou bastante. Vou seguir as orientações, obrigado!
Responder

08/03/2019

Emerson Nascimento

a instrução abaixo te dá o dia inicial e o dia atual da semana da data informada.
SELECT
	DATEPART(DAY, DATEADD(DAY, (CASE WHEN DATEPART(weekday, GETDATE()) > 1 THEN 1 - DATEPART(weekday, GETDATE()) ELSE 0 END), GETDATE())) DIAINI,
	DATEPART(DAY, GETDATE()) DIAFIM


troque GETDATE() pela data desejada. por exemplo:
SELECT
	DATEPART(DAY, DATEADD(DAY, (CASE WHEN DATEPART(weekday, '2007-04-21') > 1 THEN 1 - DATEPART(weekday, '2007-04-21') ELSE 0 END), '2007-04-21')) DIAINI,
	DATEPART(DAY, '2007-04-21') DIAFIM

daí, com o dia inicial e o dia final em mãos, você poderá fazer a tratativa que precisar.
Responder

08/03/2019

Chromusmaster

a instrução abaixo te dá o dia inicial e o dia atual da semana da data informada.
SELECT
	DATEPART(DAY, DATEADD(DAY, (CASE WHEN DATEPART(weekday, GETDATE()) > 1 THEN 1 - DATEPART(weekday, GETDATE()) ELSE 0 END), GETDATE())) DIAINI,
	DATEPART(DAY, GETDATE()) DIAFIM


troque GETDATE() pela data desejada. por exemplo:
SELECT
	DATEPART(DAY, DATEADD(DAY, (CASE WHEN DATEPART(weekday, '2007-04-21') > 1 THEN 1 - DATEPART(weekday, '2007-04-21') ELSE 0 END), '2007-04-21')) DIAINI,
	DATEPART(DAY, '2007-04-21') DIAFIM

daí, com o dia inicial e o dia final em mãos, você poderá fazer a tratativa que precisar.

Show! Fiz uma daptação para o meu contexto da seguinte maneira:
WHERE  SRE.DATAAUTORIZACAO BETWEEN (CONVERT(DATE,DATEADD(DAY, (CASE WHEN DATEPART(weekday, GETDATE()) > 1 THEN 1 - DATEPART(weekday, GETDATE()) ELSE 0 END), GETDATE()))) AND (CONVERT(DATE,GETDATE()) )
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar