Saber Dia Útil usando Select, tem como?

30/01/2006

0

Olá colegas, estou postando aqui, pois creio que se houver como, deve servir pra qualquer banco.

A dúvida é a seguinte, preciso fazer uma instrução onde a mesma compare a data informada e se a mesma não cair em dia útil ela seja incrementada até ser.

em Delphi faço isso:

[color=orange:7f676d02dc] Case dayOfWeek(StrToDate(cdsTemp.FieldByName(´DATPAG´).AsString)) of 1: dm.cdsHeader.FieldByName(´DATPAG´).AsDateTime := (dm.cdsHeader.FieldByName(´DATPAG´).AsDateTime+2); // ´Domingo´ 7: dm.cdsHeader.FieldByName(´DATPAG´).AsDateTime := (dm.cdsHeader.FieldByName(´DATPAG´).AsDateTime+3); // ´Sabado ´ end;[/color:7f676d02dc]


como fazer usando SQL? :idea: :arrow:


Macario

Macario

Responder

Posts

30/01/2006

Aasn

Olá Macario,

Para vc saber o dia da semana através de um select basta o seguinte:

select Extract(WeekDay from CampoData) from SuaTabela


[]´s
AASN


Responder

30/01/2006

Macario

Ola [b:2e1630b3a4]AASN[/b:2e1630b3a4], bom dia.

Teste sua dica no Query Analyzer mas não funcionou

Incorrect syntax near the keyword ´from´.



Outro ponto se eu utilizar esta opção terei que estar fazendo isso em uma SP?


Responder

30/01/2006

Emerson Nascimento

no SQL Server é assim:
select
  datepart(weekday,CampoData) 
from
  Tabela


onde:
1 - Domingo
2 - Segunda-feira
...
7 - Sábado


Responder

30/01/2006

Martins

no SQL Server é assim:
select
  datepart(weekday,CampoData) 
from
  Tabela
onde: 1 - Domingo 2 - Segunda-feira ... 7 - Sábado


E no Ib/Fb como seria?


Responder

30/01/2006

Michael

Olá!

Até onde eu sei, não existem funções nativas em SQL. Cada banco de dados implementa seu grupo de rotinas independentes.

A função [b:383999f633]Extract[/b:383999f633], mencionada pelo colega [b:383999f633]AASN[/b:383999f633], só funciona do jeito desejado no [b:383999f633]Firebird[/b:383999f633]. No [b:383999f633]SQL Server[/b:383999f633], por exemplo, ela serve para extrair um elemento de um conjunto. Usa-se [b:383999f633]DatePart [/b:383999f633]para se extrair uma determinada informação, como o mês, o ano, o dia da semana, etc, de um campo (small) datetime.

Sua abordagem neste caso, se quiser usar SQL, vai depender do seu banco de dados.

[]´s


Responder

30/01/2006

Michael

Olá [b:74d63e301a]Martins[/b:74d63e301a]!

No [b:74d63e301a]FB/IB[/b:74d63e301a] usa-se, como mencionado a pouco, [b:74d63e301a]Extract[/b:74d63e301a].

select Extract(weekday from CAMPO_DATA) as DiaSemana from TABELA


Mais aplicações com [b:74d63e301a]Extract [/b:74d63e301a]no FB/IB podem ser vistas [url=http://www.volny.cz/iprenosil/interbase/ip_ib_code_timestamp.htm]neste link[/url] e [url=http://firebird.sourceforge.net/index.php?op=useful&id=ostenried_1]neste tbm[/url].

[]´s


Responder

30/01/2006

Aroldo Zanela

Ola [b:f8d4234514]AASN[/b:f8d4234514], bom dia. Teste sua dica no Query Analyzer mas não funcionou
Incorrect syntax near the keyword ´from´.
Outro ponto se eu utilizar esta opção terei que estar fazendo isso em uma SP?

Colega,

Com SQL Server (parece ser o seu caso):

declare @dia_semana int

select @dia_semana = DatePart(weekday, COLUNA_DATA) from SUA_TABELA
where COLUNA_CHAVE=80626

if @dia_semana in (1,7)
begin
  if @dia_semana = 1
  begin
    set @dia_semana = @dia_semana + 2
  end
  else
  begin
    set @dia_semana = @dia_semana + 3
  end
end



Responder

30/01/2006

Macario

[quote:57bcd44233=´Aroldo Zanela´]
Ola [b:57bcd44233]AASN[/b:57bcd44233], bom dia. Teste sua dica no Query Analyzer mas não funcionou
Incorrect syntax near the keyword ´from´.
Outro ponto se eu utilizar esta opção terei que estar fazendo isso em uma SP?

Colega,

Com SQL Server (parece ser o seu caso):

declare @dia_semana int

select @dia_semana = DatePart(weekday, COLUNA_DATA) from SUA_TABELA
where COLUNA_CHAVE=80626

if @dia_semana in (1,7)
begin
  if @dia_semana = 1
  begin
    set @dia_semana = @dia_semana + 2
  end
  else
  begin
    set @dia_semana = @dia_semana + 3
  end
end
[/quote:57bcd44233]

Olá.

Obrigado pela ajuda de todos.

Alguem teria um ´esqueleto´ de um SP, para que eu possa com base na dica do [b:57bcd44233]Aroldo Zanela[/b:57bcd44233], tentar montar o que preciso. :idea: :arrow:


Responder

30/01/2006

Aroldo Zanela

Colega,

Com o Enterprise Manager, vai na seção de StoredProcedures e clica com o botão direito e seleciona ´Nova´ que ele monta o esqueleto. Acho que aqui no fórum na seção de SQL Server deve ter alguma coisa também.


Responder

30/01/2006

Macario

Valeu pela ajuda. Farei uma pesquisa.

Até mais.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar