Como retornar data no formato MM/DD/YYYY

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qua, 03 Out 2007 11:46 am

Como retornar data no formato MM/DD/YYYY ???

pessoal, a pergunta parece idiota mas é que eu não sei mesmo, hehe

é possível fazer isso no Select ou no próprio Forms???


valeu
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qua, 03 Out 2007 11:50 am

Já consegui, valeu!

To_Char(rhpessoa.pess_dt_nascimento, 'MM/DD/YYYY'),
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qua, 28 Nov 2007 3:10 pm

aproveitei um antigo tópico criado por mim (pra não ter que criar outro) pois estou

novamente com uma dúvida em relação a datas, e vasculhei aqui pelo Fórum, não encontrei o

que resolvesse meu problema


preciso retornar num Select somente os registros do mês/ano informado, na tabela TRAGENDA

eu tenho o campo AGEN_DT_INICIAL que armazena a data e hora do agendamento (25/11/2007

15:00 por exemplo), quando eu entrar na tela, ela mostra uma espécie de calendário que

desenvolvi aqui, por mês

como faço o select nesse caso?

ex, pegando mês e ano, 11/2007, trazer todos registros cadastrados nesse mês/ano?:

Código: Selecionar todos
SELECT *
   FROM tragenda
WHERE TO_CHAR(agen_dt_inicial,'MM/YYYY') = TO_CHAR('11/2007','MM/YYYY'); -- ou SYSDATE

aqui também, enfim...



está dando erro, tentei trocar TO_CHAR por TO_DATE mas também não funciona!
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qua, 28 Nov 2007 4:05 pm

Brother, tenta dessa forma, faz um teste ai:

Código: Selecionar todos

SELECT *
  FROM TABELA
WHERE TO_CHAR(DAT_EMISSAO,'MM/RRRR') = '11/2007'   ;



qualquer coisa, manda ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Qui, 29 Nov 2007 7:54 am

Dessa forma funciona sim, mas lembre-se que assim você mata o índice.
Talvez o ideal neses caso era fazer algo assim:

Código: Selecionar todos
SELECT *
FROM TABELA
WHERE DAT_EMISSAO >= to_date('11/2007','DD/YYYY')
  AND DAT_EMISSAO <  to_date('12/2007','DD/YYYY')


Dessa forma tudo continua rápido :-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, 29 Nov 2007 9:24 am

galera, valeu pelas dicas, por enquanto estou caminhando aqui com meu calendário/agenda feito na raça aqui no Forms :D

agora um outra dúvida, existe uma maneira mais "elegante" e mais direta de saber o total de dias de um determinado mês, sem ser da maneira que fiz aqui:

Código: Selecionar todos
vn_qtd_dias_mes := SUBSTR( (ADD_MONTHS( TRUNC(SYSDATE,'MM'), + 1 ) - 1), 1,2);


peguei o primeiro dia do mês, somei mais 1 mês nele, aí subtrai 1 dia :S e depois ainda foi preciso fazer um SUBSTR!!!

não existe um "Extract_Days_Month" ou algo parecido???
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qui, 29 Nov 2007 9:37 am

E ai Porva, beleza??

tem uma forma sim. segue ai..
Código: Selecionar todos
SQL> SELECT SYSDATE DATA,
  2         TO_CHAR(LAST_DAY(SYSDATE),'DD') ULT_DIA
  3    FROM DUAL
  4  /

DATA      UL
--------- --
29-NOV-07 30


[]'s
Tineks
Localização: Araraquara - SP

Cristiano (Tineks)
Araraquara - SP

Mensagemem Qui, 29 Nov 2007 9:56 am

aeeee galera, o que seria de mim sem este Fórum :D

valeuzão aí

depois que ficar pronto posto a imagem da parada aqui, hehe

está bem doido de fazer :-o
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qui, 29 Nov 2007 10:58 am

galera, aproveitando o mesmo topico...

é possível eu manipular um cursor depois que ele já estiver carreagado???

ex, aqui eu abro o cursor com um select qualquer:
Código: Selecionar todos
OPEN c_(vn_dt_atual, vn_dt_proxima); 
LOOP
  FETCH c_ INTO reg;     
  EXIT WHEN c_%NotFound;
END LOOP;


é possível eu entrar em outro loop com esse cursor já carregado e poder me 'movimentar' entre as posições (linhas) dele ??? tipo um CURSOR.NEXT, algo assim, sem que seja usado o FETCH novamente

OUTRO LOOP, o cursor já estará carregado, e eu precisarei que ele já esteja pra fazer testes de comparação abaixo:
Código: Selecionar todos
FOR i IN 1..42 LOOP
   
  --Manipular a variável do cursor já carregada aqui dentro (???)

END LOOP;
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Qui, 29 Nov 2007 11:05 am

E ai Porva, beleza??

cara, eu desconheço uma forma de navegar entre um cursor, acho que não existe, porem uma opcao seria você carregar seu cursor em uma tabela temporaria usando o fetch into bulck collect.. ai é só você usar um For pra ir ou voltar na sua tabela temporaria..

sobre sobrepor o valor retornado no cursor tem como fazer sim, segue um exemplo ai.

Código: Selecionar todos
DECLARE
   CURSOR C IS
      SELECT SYSDATE   A FROM DUAL
      UNION
      SELECT SYSDATE+1 A FROM DUAL
      UNION
      SELECT SYSDATE+2 A FROM DUAL
      UNION
      SELECT SYSDATE+3 A FROM DUAL;
     
BEGIN
   FOR x IN C LOOP
      dbms_output.put_line('>> '||X.A);
   END LOOP;
   dbms_output.put_line(' - ');
   FOR x IN C LOOP
      IF c%ROWCOUNT=2 THEN
         X.A := SYSDATE+30;
      END IF;
      dbms_output.put_line('>> '||X.A);
   END LOOP;
END ;

>> 29/11/2007 11:57:06
>> 30/11/2007 11:57:06
>> 01/12/2007 11:57:06
>> 02/12/2007 11:57:06
-
>> 29/11/2007 11:57:06
>> 29/12/2007 11:57:06 << ACRESCIMO DE 30 DIAS, ROWCOUNT = 2
>> 01/12/2007 11:57:06
>> 02/12/2007 11:57:06


[]'s
Tineks
Localização: Araraquara - SP

Cristiano (Tineks)
Araraquara - SP

Mensagemem Sex, 30 Nov 2007 7:30 am

opa Cristiano, valeu pela dica

mas consegui montar a lógica usando Fetch mesmo no cursor, não sabia que era possível manipular livremento, colocando dentro de condições If, etc..


agora é outra coisa que estou enroscado aqui, uma coisa aparentemente besta, mas eu não consigo descobrir o que é!

tenho um list na tela do tipo PopList, não data base, um record group pra popular esse list quando o Forms for aberto, o list é populado normalmente, mas não consigo acessar os registros dele, se seleciono o registro 2, 3, etc, ele sempre volta pro primeiro!

a propriedade tanto do bloco quanto do list é não data base!

o que pode estar acontecendo?!?!


Select do Record Group:

Código: Selecionar todos
SELECT veic_nm_nome || ' [' || veic_nr_placa || ']' Label,
       veic_nr_placa Value
  FROM trveiculo
WHERE veic_tp_veiculo IN ('O','R','C','V')
ORDER BY veic_nm_nome



detalhe, eu tenho um outro list numa outra canvas exatamente igual, porém, criei outro record group pra ele, e está funcioando normalmente, as propriedades estão idênttcas!

vi que existe umas restrições pro POPULATE_LIST aqui no Help, mas não consegui entender direito!


Usage Notes

Do not use the POPULATE_LIST built-in if the Mapping of Other Values property is defined and there are queried records in the block. Doing so may cause Form Builder to be unable to display records that have already been fetched.

For example, assume that a list item contains the values A, B, and C and the Mapping of Other Values property is defined. Assume also that these values have been fetched from the database (a query is open). At this point, if you populate the list using POPULATE_LIST, an error will occur because Form Builder will attempt to display the previously fetched values (A, B, and C), but will be unable to because these values were removed from the list and replaced with new values.

Before populating a list, close any open queries. Use the ABORT_QUERY built-in to close an open query.
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Sex, 30 Nov 2007 7:32 am

só corrigindo, o List que está funcionando, está num bloco base table,

o que que não é base table que não funciona
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Ter, 04 Dez 2007 9:45 am

consegui resolver o lance do list, era um lance da biblioteca aqui que deixava o bloco em modo consulta! :S

Gori, você disse na outra página pra eu utilizar dessa forma a comparação de intervalo entre datas

"Dessa forma funciona sim, mas lembre-se que assim você mata o índice.
Talvez o ideal nesses caso era fazer algo assim:"

Código:
Código: Selecionar todos
SELECT *
FROM TABELA
WHERE DAT_EMISSAO >= to_date('11/2007','DD/YYYY')
  AND DAT_EMISSAO <  to_date('12/2007','DD/YYYY')


agora eu pergunto, porque a comparação do campo Data = to_date('12/2007','DD/YYYY') não funciona (não retorna nenhum registro!)?

Código: Selecionar todos
SELECT *
  FROM tragenda
WHERE agen_dt_inicial = TO_DATE('12/2007','MM/YYYY')


se eu fizer
Código: Selecionar todos
SELECT *
  FROM tragenda
WHERE agen_dt_inicial >= TO_DATE('12/2007','MM/YYYY')


aí me retorna todos os registros do mês de dezembro, que mecanismo maluco é esse do SQL que não aceita = nas comparações de data mas se fizer >= aceita?!?!
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Ter, 04 Dez 2007 9:50 am

outra coisa, na ferramenta de SQL (com a máscara devidamente configurada: MM/YYYY), se eu faço dessa forma, funciona!

Código: Selecionar todos
WHERE TO_DATE(agen_dt_inicial,'MM/YYYY') =
TO_DATE('12/2007','MM/YYYY')


mas se eu coloco da mesma forma no Forms, na hora de abrir o cursor dá o erro: "ORA-01841 (full) year must be between -4713 and +9999, and not to be 0"
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Ter, 04 Dez 2007 9:54 am

Brother,

TEm como fazer esse teste na tua base?
Código: Selecionar todos
SELECT *
   FROM TRAGENDA
WHERE  TO_DATE(TO_CHAR(AGEN_DT_INICIAL,'MM/RRRR'),'MM/RRRR') = TO_DATE('12/2007','MM/RRRR');
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Ter, 04 Dez 2007 10:06 am

pow Paulão, funfou véio!! na base e no Cursor, dessa forma que você passou..

desculpem a 'ingnorância' galera, é que esse lance de conversão, principalmente se trabalhar com datas, é uma coisa que eu acho bem chato!, ainda estou aprendendo as possibilidades


valeu de novo :)
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Mensagemem Ter, 04 Dez 2007 10:13 am

Blezera brother...

Precisando, estamos ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Ter, 04 Dez 2007 11:37 am

aí galera, deu trabalho mas está praticamente pronto o "calendário" de agendamento dos veículos da empresa...

Imagem
Porva
Localização: São Paulo/SP

Rafael S. Nunes
São Paulo/SP


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para SQL

      Quem está online

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