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
Como retornar data no formato MM/DD/YYYY
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
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?:
está dando erro, tentei trocar TO_CHAR por TO_DATE mas tb não funciona!
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?:
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 tb não funciona!
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, tenta dessa forma, faz um teste ai:
qualquer coisa, manda ai.
SELECT *
FROM TABELA
WHERE TO_CHAR(DAT_EMISSAO,'MM/RRRR') = '11/2007' ;
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Dessa forma funciona sim, mas lembre-se que assim você mata o índice.
Talvez o ideal neses caso era fazer algo assim:
Dessa forma tudo continua rápido
Talvez o ideal neses caso era fazer algo assim:
SELECT *
FROM TABELA
WHERE DAT_EMISSAO >= to_date('11/2007','DD/YYYY')
AND DAT_EMISSAO < to_date('12/2007','DD/YYYY')
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
galera, valeu pelas dicas, por enquanto estou caminhando aqui com meu calendário/agenda feito na raça aqui no Forms
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:
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???
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:
vn_qtd_dias_mês := SUBSTR( (ADD_MONTHS( TRUNC(SYSDATE,'MM'), + 1 ) - 1), 1,2);
não existe um "Extract_Days_Month" ou algo parecido???
-
- Rank: DBA Sênior
- Mensagens: 365
- Registrado em: Ter, 24 Mai 2005 2:24 pm
- Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP
Araraquara - SP
E ai Porva, beleza??
tem uma forma sim. segue ai..
[]'s
tem uma forma sim. segue ai..
SQL> SELECT SYSDATE DATA,
2 TO_CHAR(LAST_DAY(SYSDATE),'DD') ULT_DIA
3 FROM DUAL
4 /
DATA UL
--------- --
29-NOV-07 30
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
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:
é 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:
é possível eu manipular um cursor depois que ele já estiver carreagado???
ex, aqui eu abro o cursor com um select qualquer:
OPEN c_(vn_dt_atual, vn_dt_proxima);
LOOP
FETCH c_ INTO reg;
EXIT WHEN c_%NotFound;
END LOOP;
OUTRO LOOP, o cursor já estará carregado, e eu precisarei que ele já esteja pra fazer testes de comparação abaixo:
FOR i IN 1..42 LOOP
--Manipular a variável do cursor já carregada aqui dentro (???)
END LOOP;
-
- Rank: DBA Sênior
- Mensagens: 365
- Registrado em: Ter, 24 Mai 2005 2:24 pm
- Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP
Araraquara - SP
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.
[]'s
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.
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
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
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:
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.
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:
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
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
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:
agora eu pergunto, porque a comparação do campo Data = to_date('12/2007','DD/YYYY') não funciona (não retorna nenhum registro!)?
se eu fizer
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?!?!
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:
SELECT *
FROM TABELA
WHERE DAT_EMISSAO >= to_date('11/2007','DD/YYYY')
AND DAT_EMISSAO < to_date('12/2007','DD/YYYY')
SELECT *
FROM tragenda
WHERE agen_dt_inicial = TO_DATE('12/2007','MM/YYYY')
SELECT *
FROM tragenda
WHERE agen_dt_inicial >= TO_DATE('12/2007','MM/YYYY')
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
outra coisa, na ferramenta de SQL (com a máscara devidamente configurada: MM/YYYY), se eu faço dessa forma, funciona!
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"
WHERE TO_DATE(agen_dt_inicial,'MM/YYYY') =
TO_DATE('12/2007','MM/YYYY')
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
TEm como fazer esse teste na tua base?
TEm como fazer esse teste na tua base?
SELECT *
FROM TRAGENDA
WHERE TO_DATE(TO_CHAR(AGEN_DT_INICIAL,'MM/RRRR'),'MM/RRRR') = TO_DATE('12/2007','MM/RRRR');
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
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
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
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Blezera brother...
Precisando, estamos ai.
Precisando, estamos ai.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 29 visitantes