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 :-)
Responder
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

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

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.

Selecionar tudo

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....

Selecionar tudo

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.
ishii
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 82
Registrado em: Ter, 28 Dez 2010 7:41 pm
Localização: São Paulo - SP

Olá,

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

Selecionar tudo

SQL> select trunc(sysdate,'mm') 
  2  ,      last_day(sysdate) 
  3  from   dual 
  4  / 
Deve funcionar do mesmo jeito....

[]s Ishii
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

Gênio!!! :-o

:lol: :lol: :lol:
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

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

A hora q eu achar o gênio q bolou esta função eu dou um toque....hehehehe...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

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

Selecionar tudo

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
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

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

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
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

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

Acessem: www.gfkauer.com.br

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...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes