fajo Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 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_ValorFROM Tab_ProducaoWHERE Tab_Producao.Pro_Fun_Id = 882AND Format([Pro_Dt],'yyyymm') = 200705AND 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 = 882AND (extract(year from PRO_DT) || extract(month from PRO_DT)) = 200705AND 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 Antes de mais nada, verifque as configurações regionais do seu windows, e veja como esta definida a data, pois isto interfere no resultado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Outubro 5, 2007 Denunciar Share Postado Outubro 5, 2007 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 = 882AND (extract(year from PRO_DT) || extract(month from PRO_DT)) = 20075AND PRO_QUINZENA = 1 ORDER BY PRO_FUN_ID, PRO_DTse 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fajo
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
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.