DATA BASEADA NO DIA DA SEMANA

GUILHERMEMFA 07/08/2014 11:14:14
#440249
Bom dia pessoal!

no SQL Server 2008 para retornar a semana do ano baseada em uma data informada, eu faço o seguinte. Ex

Citação:

Declare @DataTeste as DATETIME
SET @DataTeste = [ô]2014-05-20[ô]
SELECT DATEPART(WK,@DataTeste) as Semana



Isso me retorna a semana do ano.

Como eu faço para fazer o contrário?
Eu informar a semana e o SQL me retornar a primeira data da semana informada?

Grato
TUNUSAT 07/08/2014 15:38:47
#440257
GUILHERMEMFA,

Acho que a reposta está aqui:

============================================
http://msdn.microsoft.com/pt-br/library/ms174420.aspx
[Ô]weekday, dw[Ô]
============================================
Ao invés de: [Ô]WK[Ô]
Use: [Ô]dw[Ô]
============================================

Espero ter ajudado.

[][ô]s,
Tunusat.
GUILHERMEMFA 11/08/2014 08:51:01
#440331
Isso ai não resolve Tunusat,

tive que improvisar uma função em VB.
Não sei se é a melhor forma, mas funcionou.

Citação:


Public Function converteSemana(vSemanaAno As Integer, vDataAno As DTPicker)
On Error GoTo Err
Dim vDataConvertida As String [ô]Dia/Mes/Ano
Dim vAno As String, vMes As String, vDia As String
Dim vX As Integer, vY As Integer
vAno = DatePart([Ô]yyyy[Ô], Date)
For vX = 1 To 12
vMes = Format(vX, [Ô]00[Ô])
For vY = 1 To 31
vDia = Format(vY, [Ô]00[Ô])
vDataConvertida = Format(vDia & [Ô]/[Ô] & vMes & [Ô]/[Ô] & vAno, [Ô]dd/mm/yyyy[Ô])
If IsDate(CDate(vDataConvertida)) Then
If DatePart([Ô]ww[Ô], CDate(vDataConvertida)) = vSemanaAno Then
vDataAno.Value = vDataConvertida
Exit Function
End If

End If
Next
Next
Err:
vX = vX + 1
vY = 1
vMes = Format(vX, [Ô]00[Ô])
vDia = Format(vY, [Ô]00[Ô])
vDataConvertida = Format(vDia & [Ô]/[Ô] & vMes & [Ô]/[Ô] & vAno, [Ô]dd/mm/yyyy[Ô])
Resume Next
End Function



Se alguém tiver alguma dica de melhoria posta ai.
Vlw
Tópico encerrado , respostas não são mais permitidas