Dias da semana

SQL Server

SQL

07/03/2019

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

Curtidas 0

Melhor post

Ana Lichirgu

Ana Lichirgu

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!
GOSTEI 2

Mais Respostas

Chromusmaster

Chromusmaster

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!

Ajudou bastante. Vou seguir as orientações, obrigado!
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/03/2019

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.
GOSTEI 1
Chromusmaster

Chromusmaster

07/03/2019

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()) )
GOSTEI 0
POSTAR