none
Especificar semana com ano RRS feed

  • Pergunta

  • Boas

    Estou a exprimentar este código:

    select DATENAME(DAYOFYEAR,CAST(campo_data as datetime)/7+1), year(CAST(campo_data as datetime)) as SEMAN from teste21
    
    Mas da-me um erro:
    
    Msg 257, Level 16, State 3, Line 1
    Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.

    Nota: O campo em que tenho a data é nvarchar. Mas o Cast já deve resolver...

    Obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    quinta-feira, 29 de março de 2012 17:03

Respostas

  • Flashed,

    Veja se o exempl oabaixo te ajuda

    declare @pesquisa_semana as table(
     data varchar(max)
     );
     
     insert into @pesquisa_semana values('04-01-2011')
     insert into @pesquisa_semana values('08-02-2011')
     insert into @pesquisa_semana values('08-03-2011')
     insert into @pesquisa_semana values('04-04-2011')
     insert into @pesquisa_semana values('04-05-2011')
     insert into @pesquisa_semana values('07-02-2011')
      
     select DATEPART( WW,data) - 1,		
    		DATENAME(WK,DATA)	
    from  @pesquisa_semana 

    Adriano Nascimento
    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 08:00
    quinta-feira, 29 de março de 2012 22:44
  • Oi Flashed, eu fiz um exemplo com o campo nvarchar(max) que é exatamente o teu caso.

    Veja se isso resolve teu problema.

    declare @data nvarchar(max)= '30/03/2012'
    
    select 'SEMANA ', DATENAME(WK,CONVERT(datetime,CAST(@data as varchar(10)),103)), ' do ano ', DATENAME(YYYY,CONVERT(datetime,CAST(@data as varchar(10)),103))

    Espero que seja o que tu precisa.

    Vlew.


    --
    Marcus Vinícius Bittencourt
    blog: isqlserver.wordpress.com
    www.sqlserverRS.com.br

    sexta-feira, 30 de março de 2012 12:01

Todas as Respostas

  • Flashed,

    O que você espera de retorno com este select?

    Abçs,

    Adriano Nascimento

    quinta-feira, 29 de março de 2012 21:21
  • Adriano o objectivo desse código é escrever numa coluna ao lado a semana correspondente da data. Deve ficar algo assim:

    Semana 1 de 2012

    pois depois vou fazer um select com a pesquisa por semana do ano.

    Mas se houver algum código que fosse especifique a semana do ano e ele faça a busca em campos no formato 01-02-2012 era o ideial. Poupava.me código.

    Acha que existe?

    Obrigado

     

    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    quinta-feira, 29 de março de 2012 21:32
  • Flashed,

    Veja se o exempl oabaixo te ajuda

    declare @pesquisa_semana as table(
     data varchar(max)
     );
     
     insert into @pesquisa_semana values('04-01-2011')
     insert into @pesquisa_semana values('08-02-2011')
     insert into @pesquisa_semana values('08-03-2011')
     insert into @pesquisa_semana values('04-04-2011')
     insert into @pesquisa_semana values('04-05-2011')
     insert into @pesquisa_semana values('07-02-2011')
      
     select DATEPART( WW,data) - 1,		
    		DATENAME(WK,DATA)	
    from  @pesquisa_semana 

    Adriano Nascimento
    • Marcado como Resposta Jonas São Paulo segunda-feira, 2 de abril de 2012 08:00
    quinta-feira, 29 de março de 2012 22:44
  • Muito bom Adriano :)

    Funcionou beleza

    Tenho é apenas um problema. As minha datas são dia/mes/ano e as suas são mes/dia/ano.

    Como posso alterar o código que voce me passou para o meu formato?

    Obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    sexta-feira, 30 de março de 2012 07:56
  • Adriano

    Aparece esta informação:

    1 1
    2 2
    32 32
    15 15
    15 15
    27 27 

    Na segunda tabela não devia aparecer o ano correspondente há data?

    obrgiado


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    sexta-feira, 30 de março de 2012 08:10
  • Oi Flashed, eu fiz um exemplo com o campo nvarchar(max) que é exatamente o teu caso.

    Veja se isso resolve teu problema.

    declare @data nvarchar(max)= '30/03/2012'
    
    select 'SEMANA ', DATENAME(WK,CONVERT(datetime,CAST(@data as varchar(10)),103)), ' do ano ', DATENAME(YYYY,CONVERT(datetime,CAST(@data as varchar(10)),103))

    Espero que seja o que tu precisa.

    Vlew.


    --
    Marcus Vinícius Bittencourt
    blog: isqlserver.wordpress.com
    www.sqlserverRS.com.br

    sexta-feira, 30 de março de 2012 12:01
  • MArcus funcionou como pretendia :) Já consegui adptar o select para a minha tabela e tudo :)

    Obrigado a todos


    Visual Basic 2008 Express Edition SQL Server Management Studio flashedr8@gmail.com

    segunda-feira, 2 de abril de 2012 08:02