Ir para conteúdo
Fórum Script Brasil
  • 0

Formatção De Data Direto No Sql


fajo

Pergunta

Bom, estou migrando um sistema em Access para Firebird e me deparei com um problema, uma de suas consultas tem o conteúdo:

"SELECT Tab_Producao.Pro_Fun_Id,

Day([Pro_Dt]) AS Dias,

Tab_Producao.Pro_Dt,

Format([Pro_Dt],'yyyymm') AS Refer, Tab_Producao.Pro_Valor

FROM Tab_Producao

WHERE Tab_Producao.Pro_Fun_Id = 882

AND Format([Pro_Dt],'yyyymm') = 200705

AND Tab_Producao.Pro_Quinzena = "1"

ORDER BY Tab_Producao.Pro_Fun_Id, Tab_Producao.Pro_Dt"

que convertendo para firebird ficou assim:

"SELECT PRO_FUN_ID,

extract(day from PRO_DT) AS DIAS,

PRO_DT,

(extract(year from PRO_DT) || extract(month from PRO_DT)) AS REFER, PRO_VALOR

FROM TAB_PRODUCAO

WHERE Pro_Fun_Id = 882

AND (extract(year from PRO_DT) || extract(month from PRO_DT)) = 200705

AND PRO_QUINZENA = 1 ORDER BY PRO_FUN_ID, PRO_DT"

o grande problema é na formatação do mês - extract(month from PRO_DT) - pois da forma q está o retorno é 20075, o q é diferente de 200705;

alguma sugestão?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Antes de mais nada, verifque as configurações regionais do seu windows, e veja como esta definida a data, pois isto interfere no resultado.
Jhonas, neste caso não influencia não.

Ocorre que EXTRACT estará retornando um número inteiro, o qual será transformado em "string" pelo uso do operador de concatenação de textos do Firebird ("||").

o grande problema é na formatação do mês - extract(month from PRO_DT) - pois da forma q está o retorno é 20075, o q é diferente de 200705;

alguma sugestão?

supondo que você esteja montando este valor de algum modo (talvez através de edit), seria conveniente que você montasse da forma como o Firebird espera.
SELECT PRO_FUN_ID,

extract(day from PRO_DT) AS DIAS,

PRO_DT,

(extract(year from PRO_DT) || extract(month from PRO_DT)) AS REFER, PRO_VALOR

FROM TAB_PRODUCAO

WHERE Pro_Fun_Id = 882

AND (extract(year from PRO_DT) || extract(month from PRO_DT)) = 20075

AND PRO_QUINZENA = 1 ORDER BY PRO_FUN_ID, PRO_DT

se o campo utilizado for do tipo data, converta ele para string utilizando a função FormatDateTime:

FormatDateTime('yyyym', Date);

com este formato, o mês não terá o zero inicial quando form menor que 10.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...