Firebird 2.1 timestamp aritmético e intervalos civis
-
22-09-2019 - |
Pergunta
Meu entendimento é que, de acordo com o Interbase V6, o Firebird 2.5 não suporta o SQL-92 INTERVAL
palavra -chave. Pelo menos, então sugere esta referência E meus erros repetidos SQLCode -104 tentando obter INTERVAL
s para trabalhar sob o Firebird's ISQL (1).
Como, então, considero as irregularidades em nosso acerto de contas civis do tempo - os meses não são uniformemente longos, nem dias com tempo de poupança e ajustes de salto, sem mencionar o ano de confusão etc. - ao executar TIMESTAMP
aritmética sob Firebird 2.1?
Como posso determinar facilmente "um mês antes" ou "uma semana depois" do que um dado TIMESTAMP
? Que tal "um dia depois" ou "duas horas antes"?
Solução
Você pode usar o DataAdd () e Datediff () funções internas.
Alternativamente, você também pode usar clássico data aritmética.
Outras dicas
Se isso não for implementado no Firebird, talvez você possa fazê -lo através da tecnologia chamando seu servidor SQL e obter o registro de data e hora resultante? Eu sei que isso pode ser feito com bastante facilidade em java ou .net
Você também pode usar o funções do UDF externo fbudf.dll
Há um bom UDF externo chamado Rfunc: http://rfunc.sourceforge.net/, tem boas funções de data como DaysBetween e Incdate (d, i1, i2, i3) e muito mais
- Subtrair um dia da data do timestamp em um loop até que o mês mude.
- Subtrair um dia da data de data e hora em um loop até que o dia mude para domingo.