FIRST_DAY

Este forum é dedicado a códigos errados que se encontram por aí, ou seja, coisas que não se deve fazer de jeito nenhum! Não coloque neste forum dúvidas! (apenas situações bizarras do nosso dia a dia :-)
  

Mensagemem Qua, 16 Mar 2011 2:54 pm

Não consigo entender como um empresa do porte da Oracle não teve a capacidade de pensar em uma função como essa. Depois do LAST_DAY, apresento a vocês o FIRST_DAY.

Código: Selecionar todos
create or replace
FUNCTION FIRST_DAY (pDATA IN DATE DEFAULT SYSDATE) RETURN DATE AS
begin
  --Retorna o primeiro dia do mês passado no parâmetro
  RETURN last_day(add_months(pDATA,-1))+1;
END FIRST_DAY;


Pra testar....

Código: Selecionar todos
SQL> select first_day(sysdate)
  2  ,      last_day(sysdate)
  3  from   dual
  4  /

FIRST_DAY(SYSDATE) LAST_DAY(SYSDATE)
------------------ -----------------
01/03/2011       31/03/2011


Encontrado no ambiente de produção.
ballboas
Localização: sp

Érico Balboa

A pergunta mais cretina é aquela que não é feita

Mensagemem Qui, 17 Mar 2011 11:06 am

Olá,

Você poderia usar o trunc também...

Código: Selecionar todos
SQL> select trunc(sysdate,'mm')
  2  ,      last_day(sysdate)
  3  from   dual
  4  /


Deve funcionar do mesmo jeito....

[]s Ishii
ishii
Localização: São Paulo - SP


Mensagemem Qui, 17 Mar 2011 11:22 am

Gênio!!! :-o

:lol: :lol: :lol:
burga
Localização: SP

Ricardo H. Tajiri

Mensagemem Qui, 17 Mar 2011 11:25 am

A hora q eu achar o gênio q bolou esta função eu dou um toque....hehehehe...
ballboas
Localização: sp

Érico Balboa

A pergunta mais cretina é aquela que não é feita

Mensagemem Qui, 17 Mar 2011 11:32 am

Antigamente, quando eu não conhecia o TRUNC( sysdate, 'MM'), eu fazia assim:

Código: Selecionar todos
SQL> SELECT TO_DATE(  '01/'||TO_CHAR(SYSDATE, 'MM/YYYY') , 'DD/MM/YYYY')
  2  FROM DUAL;

TO_DATE(
--------
01/03/11

SQL>


:oops:

Ahhh, bons tempos de estagiário :-D
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Qui, 17 Mar 2011 11:48 am

Em minha singela e humilde opinião, é menos burro que fazer uma função FIRST_DAY, pelo menos nos seus tempos de estagiário você já sabia que o mês seeempre começa pelo dia 01. hehe..... :D
ballboas
Localização: sp

Érico Balboa

A pergunta mais cretina é aquela que não é feita

Mensagemem Qui, 17 Mar 2011 1:39 pm

Eu até hoje vejo isto em códigos legado.

É mais comum do que imaginam.

Mas não se preocupem, sempre alguém se supera e faz algo mais absurdo que a gente...
gfkauer
Localização: Sapiranga - RS

Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br



Voltar para Códigos Duvidosos

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante