# Sintaxe de escape do JDBC para a palavra chave fn

A palavra chave fn permite utilizar várias funções escalares. O nome da função vem imediatamente após a palavra chave fn.

#### Sintaxe

    {fn chamadaFunção}

onde chamadaFunção é uma das seguintes funções:

    concat (ExpressãoCaractere,
    ExpressãoCaractere)

Cadeia de caracteres formada anexando a segunda cadeia à primeira; se uma das cadeias for nula, o resultado será nulo. {fn concat (ExpressãoCaractere, ExpressãoCaractere) é equivalente à sintaxe nativa { ExpressãoCaractere || ExpressãoCaractere }. Para obter mais detalhes deve ser consultado Concatenação.

    sqrt (ExpressãoPontoFlutuante)

Raiz quadrada do número de ponto flutuante.

{fn sqrt (ExpressãoPontoFlutuante)} é equivalente à sintaxe nativa SQRT(ExpressãoPontoFlutuante). Para obter mais detalhes deve ser consultado SQRT.

    abs (ExpressãoNumérica)

Valor absoluto do número. {fn abs(ExpressãoNumérica)} é equivalente à sintaxe nativa ABSOLUTE(ExpressãoNumérica). Para obter mais detalhes deve ser consultado ABS ou ABSVAL.

    locate(ExpressãoCaractere, ExpressãoCaractere [, posiçãoInício] )

Posição na segunda ExpressãoCaractere da primeira ocorrência da primeira ExpressãoCaractere, procurando a partir do início da segunda expressão caractere, a menos que esteja especificada a posiçãoInício. {fn locate(ExpressãoCaractere,ExpressãoCaractere [, posiçãoInício])} é equivalente à sintaxe nativa LOCATE(ExpressãoCaractere, ExpressãoCaractere [, PosiçãoInício] ). Para obter mais detalhes deve ser consultado LOCATE.

    substring(ExpressãoCaractere, posiçãoInício, comprimento)

A cadeia de caracteres formada pela extração de comprimento caracteres da ExpressãoCaractere a partir da posiçãoInício; a posição começa em 1.

    mod(tipo_inteiro, tipo_inteiro)

MOD retorna o resto (módulo) do argumento 1 dividido pelo argumento 2. O resultado será negativo apenas se o argumento 1 for negativo. Para obter mais detalhes deve ser consultado MOD.

Nota: Esta sintaxe permite o uso de qualquer função nativa do Derby, e não apenas as listadas nesta seção.

    TIMESTAMPADD( intervalo, expressãoInteira, expressãoCarimboTempo )

Utiliza a função `TIMESTAMPADD` para adicionar o valor de um intervalo a um carimbo do tempo. A função aplica o inteiro ao carimbo do tempo especificado baseado no tipo de intervalo, e retorna a soma como um novo carimbo do tempo. Pode ser realizada subtração no carimbo do tempo utilizando inteiros negativos.

Deve ser observado que `TIMESTAMPADD` é uma função do JDBC com escape, sendo acessível apenas utilizando a sintaxe de função com escape do JDBC.

Para realizar `TIMESTAMPADD` em datas e horas, é necessário convertê-los para carimbo do tempo. As datas são convertidas em carimbos do tempo colocando 00:00:00.0 no campo das horas. As horas são convertidas em carimbos do tempo colocando a data corrente no campo da data.

Deve ser observado que não deve ser colocada uma coluna data/hora dentro de uma função aritmética de carimbo do tempo na cláusula WHERE, porque o otimizador não usará nenhum índice na coluna.

    TIMESTAMPDIFF( intervalo, expressãoCarimboTempo1, expressãoCarimboTempo2 )

Utiliza a função `TIMESTAMPDIFF` para descobrir a diferença entre dois valores de carimbo do tempo no intervalo especificado. Por exemplo, a função pode retornar o número de minutos entre dois carimbos do tempo especificados.

Deve ser observado que `TIMESTAMPDIFF` é uma função do JDBC com escape, sendo acessível apenas utilizando a sintaxe de função com escape do JDBC.

Para realizar `TIMESTAMPDIFF` em datas e horas, é necessário convertê-los em carimbo do tempo. As datas são convertidas em carimbos do tempo colocando 00:00:00.0 no campo das horas. As horas são convertidas em carimbos do tempo colocando a data corrente no campo da data.

Deve ser observado que não deve ser colocada uma coluna data/hora dentro de uma função aritmética de carimbo do tempo na cláusula WHERE, porque o otimizador não usará nenhum índice para a coluna.

#### Intervalos válidos para TIMESTAMPADD e TIMESTAMPDIFF

As funções `TIMESTAMPADD` e `TIMESTAMPDIFF` podem ser utilizadas para realizar aritmética com carimbos do tempo. Estas duas funções utilizam os seguintes intervalos válidos para as operações aritméticas:

- SQL_TSI_DAY
- SQL_TSI_FRAC_SECOND
- SQL_TSI_HOUR
- SQL_TSI_MINUTE
- SQL_TSI_MONTH
- SQL_TSI_QUARTER
- SQL_TSI_SECOND
- SQL_TSI_WEEK
- SQL_TSI_YEAR

#### Exemplo de TIMESTAMPADD e TIMESTAMPDIFF

    {fn TIMESTAMPADD( SQL_TSI_MONTH, 1, CURRENT_TIMESTAMP)}

Retorna um valor carimbo do tempo um mês após o carimbo do tempo corrente.

    {fn TIMESTAMPDIFF(SQL_TSI_WEEK, CURRENT_TIMESTAMP,
      timestamp('2001-01-01-12.00.00.000000'))}

Retorna o número de semanas entre agora e a hora especificada em 1 de janeiro de 2001.

Tópico pai: Sintaxe de escape do JDBC
Referências relacionadas
Palavra chave de escape do JDBC para instruções call
Sintaxe de escape do JDBC
Sintaxe de escape do JDBC para cláusulas LIKE
Sintaxe de escape do JDBC para junções externas
Sintaxe de escape do JDBC para formatos de hora
Sintaxe de escape do JDBC para formatos de carimbo do tempo