Array
(
)

Saber Dia Útil usando Select, tem como?

Macario
   - 30 jan 2006

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:


Citação:
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;


como fazer usando SQL? :idea: :arrow:


Aasn
   - 30 jan 2006

Olá Macario,

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

#Código

select Extract(WeekDay from CampoData) from SuaTabela


[]´s
AASN


Macario
   - 30 jan 2006

Ola AASN, bom dia.

Teste sua dica no Query Analyzer mas não funcionou

#Código

Incorrect syntax near the keyword ´from´.



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


Emerson
   - 30 jan 2006

no SQL Server é assim:
#Código

select
datepart(weekday,CampoData)
from
Tabela


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


Martins
   - 30 jan 2006


Citação:
no SQL Server é assim:
#Código

select
datepart(weekday,CampoData)
from
Tabela


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

E no Ib/Fb como seria?


Michael
   - 30 jan 2006

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 Extract, mencionada pelo colega AASN, só funciona do jeito desejado no Firebird. No SQL Server, por exemplo, ela serve para extrair um elemento de um conjunto. Usa-se DatePart 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


Michael
   - 30 jan 2006

Olá Martins!

No FB/IB usa-se, como mencionado a pouco, Extract.

#Código

select Extract(weekday from CAMPO_DATA) as DiaSemana from TABELA


Mais aplicações com Extract 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


Aroldo Zanela
   - 30 jan 2006


Citação:
Ola AASN, bom dia.

Teste sua dica no Query Analyzer mas não funcionou

#Código

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):

#Código

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



Macario
   - 30 jan 2006


Citação:

Citação:
Ola AASN, bom dia.

Teste sua dica no Query Analyzer mas não funcionou

#Código

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):

#Código

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


Olá.

Obrigado pela ajuda de todos.

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


Aroldo Zanela
   - 30 jan 2006

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.


Macario
   - 30 jan 2006

Valeu pela ajuda. Farei uma pesquisa.

Até mais.