Retorna um valor lógico que indica se o valor especificado está dentro de um intervalo.
Sintaxe
BETWEEN(valor; mín; máx)
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
valor |
caractere numérico datahora |
O campo, expressão ou valor literal a ser testado. |
mín |
caractere numérico datahora |
O valor mínimo do intervalo. Pode ser um campo, uma expressão ou um valor literal. |
máx |
caractere numérico datahora |
O valor máximo do intervalo. Pode ser um campo, uma expressão ou um valor literal. |
Nota
O intervalo avaliado como T (verdadeiro) inclui os valores min e max.
Para obter informações a respeito de intervalos de caracteres, consulte Comportamento do SET EXACT.
Saída
Lógico. Retorna T (verdadeiro) se valor for maior ou igual ao valor min e menor ou igual ao valor max. Caso contrário, retorna F (falso).
Exemplos
Exemplos básicos
Entrada numérica
Retorna T:
BETWEEN(500;400;700)
Retorna F:
BETWEEN(100;400;700)
Entrada de caracteres
Retorna T:
BETWEEN("B";"A";"C")
Retorna F, pois a comparação de caracteres diferencia entre maiúsculas e minúsculas e "b" minúsculo não está entre "A" e "C" maiúsculos:
BETWEEN("b";"A";"C")
Entrada datahora
Retorna T:
BETWEEN(`141230`;`141229`;`141231`)
Retorna T para todos os valores do campo Hora_login entre 07:00:00 AM e 09:00:00 AM, inclusive, e F para os demais:
BETWEEN(Hora_login;`t070000`;`t090000`)
Comportamento do SET EXACT
Retorna T para todos os valores do campo Sobrenome que começam com as letras entre "C" e "K", inclusive, e "F" para os demais (SET EXACT deve ser OFF):
BETWEEN(Sobrenome; "C"; "K")
Retorna T para todos os valores do campo Sobrenome que começam com as letras entre "C" e "J", inclusive, e "F" para os demais (SET EXACT deve ser ON). Também retorna T para a letra "K" sozinha:
BETWEEN(Sobrenome; "C"; "K")
Entrada de campo
Retorna T para todos os valores do campo Data_Fatura entre 30 Set 2014 e 30 Out 2014, incluindo estas, ou F em outro caso:
BETWEEN(Data_Fatura; `20140930`; `20141030`)
Retorna T para todos os registros nos quais a data da fatura não se situa entre a data de recebimento e data de pagamento, incluindo estas, ou F em outro caso:
NOT BETWEEN(Data_Fatura; Data_Rec; Data_Pagto)
Retorna T para todos os valores no campo Valor_Fatura de $ 1000 a $ 5000, incluindo estes, ou F em outro caso:
BETWEEN(Valor_Fatura; 1000; 5000)
Exemplos avançados
Criar um filtro para exibir uma faixa salarial
O exemplo a seguir abre a tabela de amostra Lista_Funcionários e aplica um filtro que limita os registros exibidos para incluir apenas funcionários que ganham um salário maior ou igual a $ 40.000,00 e menor ou igual a $ 50.000,00.
OPEN Lista_funcionários SET FILTER TO BETWEEN(Salário; 40000,00; 50000,00)
Crie um filtro para encontrar datas em um intervalo mutável
Você criou uma tabela que associa dados do sistema de viagens e despesas da empresa com os dados de cartão de crédito da empresa. Você quer descobrir se funcionários foram reembolsados pela hospedagem de um hotel que também foi cobrada no cartão de crédito da empresa.
Você associa os dois conjuntos de dados pelo campo Valor e pretende usar as datas da estadia do hotel e a data da despesa do sistema de viagens e despesas para confirmar se os dois valores pertencem à mesma despesa. O problema é que a data no sistema de viagens e despesas pode ser diferente em um ou dois dias das datas de hotel dos dados do cartão de crédito da empresa.
O exemplo abaixo abre a tabela Dados_de_despesa_associados e aplica um filtro que encontra datas de viagens e despesas próximas das datas de hotel. Usando campos em vez de valores reais de data, os intervalos se deslocam de acordo com a data.
OPEN Dados_de_despesa_associados SET FILTER TO BETWEEN(Data_V_D, Data_chegada-2, Data_chegada+2) OR BETWEEN(Data_V_D, Data_saída-2, Data_saída+2)
Observações
Tipos de dados compatíveis
Entradas para a função BETWEEN( ) podem ser numéricas, caracteres ou dados de datahora. Não é possível misturar tipos de dados. Todas as três entradas devem pertencer à mesma categoria de dados.
Use BETWEEN( ) em vez do operador AND
Você pode usar a função BETWEEN( ) em vez de expressões que utilizam o operador AND.
Por exemplo:
BETWEEN(Valor_Fatura; 1000; 5000)
equivale a
Valor_Fatura>= 1000 AND Valor_Fatura <= 5000
A ordem de mín e máx
A ordem de min e max na função BETWEEN( ) não é importante porque o Analytics identifica automaticamente qual valor é o mínimo e qual é o máximo.
Os dois exemplos abaixo retornam T:
BETWEEN(2500; 1000; 5000)
BETWEEN(2500; 5000; 1000)
Precisão decimal de entradas numéricas
Quando as entradas numéricas em comparação têm diferentes precisões de decimais, a comparação usa o nível mais alto de precisão.
Retorna T, pois 1,23 é igual a 1,23:
BETWEEN(1,23; 1,23; 1,25)
Retorna F, pois 1,23 é menor que 1,234 quando a terceira casa decimal é considerada:
BETWEEN(1,23; 1,234; 1,25)
Dados de caracteres
Diferenciação de maiúsculas e minúsculas
A função BETWEEN( ) diferencia maiúsculas de minúsculas quando usada com dados de caracteres. Na comparação de caracteres, "a" não é equivalente a "A".
Retorna F:
BETWEEN("B";"a";"C")
Se você estiver trabalhando com dados com inconsistência entre maiúsculas e minúsculas, poderá usar a função UPPER( ) para converter os valores para que fiquem consistentes antes de usar BETWEEN( ).
Retorna T:
BETWEEN(UPPER("B"); UPPER("a"); UPPER("C"))
Correspondência parcial
A correspondência parcial é suportada para comparações de caracteres.
valor pode ser contido por min.
Retorna T, embora o valor "AB" pareça ser menor que o min "ABC":
BETWEEN("AB"; "ABC"; "Z")
max pode ser contido por valor.
Retorna T, embora o valor "ZZ" pareça ser maior que o max "Z":
BETWEEN("ZZ"; "ABC"; "Z")
Nota
O valor mais curto na comparação de caracteres deve aparecer no início do valor mais longo para constituir uma correspondência.
Correspondência parcial e SET EXACT
A correspondência parcial é ativada quando SET EXACT = OFF, que é a configuração padrão do Analytics. Se SET EXACT = ON, a correspondência parcial é desativada e os valores em comparação devem corresponder exatamente para que a correspondência seja considerada.
Os dois exemplos acima resultam em Falso quando o SET EXACT está em ON.
Para obter mais informações sobre o SET EXACT (a opção Comparações exatas de caractere), consulte Comando SET.
Ativação ou desativação de SET EXACT
Para ter certeza de que a opção Comparações exatas de caractere não seja usada com a função BETWEEN( ), verifique se a opção está desmarcada na guia Tabela na caixa de diálogo Opções ( ).
Se você está usando um script, pode adicionar o comando SET EXACT OFF antes que a função BETWEEN( ) apareça. Se necessário, você pode restaurar o estado anterior com o comando SET EXACT ON.
Parâmetros de datahora
Um campo de data, datahora ou hora especificado como entrada de função pode usar qualquer formato de data, datahora ou hora desde que a definição do campo defina corretamente o formato.
Combinação de entradas de dados, datahora e hora
É possível combinar valores de data, datahora e hora nas três entradas da função BETWEEN( ), mas essa combinação dos subtipos de datahora pode gerar resultados sem significado.
O Analytics usa equivalentes a números seriais para processar cálculos de data hora. Mesmo que você tenha interesse apenas na parte de data de um valor de datahora, a parte de hora continua a participar do cálculo.
Considere os exemplos a seguir:
Retorna T, pois 31 de dezembro de 2014 está no intervalo especificado por min e max:
BETWEEN(`20141231`;`20141229`;`20141231`)
Retorna F, embora 12:00 PM de 31 de dezembro de 2014 pareça estar no intervalo especificado por min e max:
BETWEEN(`20141231 120000`;`20141229`;`20141231`)
Se examinarmos o equivalente ao número serial dessas duas expressões, poderemos perceber por que a segunda será avaliada como falso.
Retorna T, porque o número serial valor é igual ao número serial max:
BETWEEN(42003,000000; 42001,000000; 42003,000000)
Retorna T, porque o número serial valor é maior que o número serial max:
BETWEEN(42003,500000; 42001,000000; 42003,000000)
O número serial 42003,500000 é maior que 42003,000000 e, portanto, fora do intervalo, embora as duas datas sejam idênticas. 0,500000 é o equivalente ao número serial 12:00 PM.
Harmonizar subtipos de datahora
Para evitar os problemas que podem ser causados pela mistura de subtipos de datahora, você pode usar funções para harmonizá-los.
Por exemplo, essa expressão, que usa os mesmos valores iniciais do segundo exemplo acima, é avaliada como T em vez de F:
BETWEEN(CTOD(DATE(`20141231 120000`;"YYYYMMDD");"YYYYMMDD");`20141229`;`20141231`)
Especificação de um valor literal de data, datahora ou hora
Ao especificar um valor literal de data , datahora ou hora para qualquer uma das entradas de função, você fica restrito aos formatos na tabela abaixo e o valor deve estar entre apóstrofos invertidos – por exemplo, `20141231`.
Não use separadores como barras (/) ou dois pontos (:) entre os componentes individuais de datas ou horas.
-
Valores de datahora – você pode usar qualquer combinação de formatos de data, separador e hora listados na tabela abaixo. A data deve preceder a hora e um separador deve ser usado entre os dois. Os separadores válidos são um único espaço em branco ou as letras 't' ou 'T'.
-
Valores de tempo – as horas devem ser especificadas usando o relógio de 24 horas. Os ajustes do Tempo Universal Coordenado (UTC) devem ser precedidos por um sinal de mais (+) ou de menos (-).
Exemplos de formato
Exemplos de valores literais
AAAAMMDD
`20141231`
AAMMDD
`141231`
AAAAMMDD hhmmss
`20141231 235959`
AAMMDDthhmm
`141231t2359`
AAAAMMDDThh
`20141231T23`
AAAAMMDD hhmmss+/-hhmm
(ajuste UTC)
`20141231 235959-0500`
AAMMDD hhmm+/-hh
(ajuste UTC)
`141231 2359+01`
thhmmss
`t235959`
Thhmm
`T2359`
Nota
Não use somente hh no formato de hora principal com dados que têm um ajuste UTC. Por exemplo, evite: hh+hhmm. Os resultados podem ser não confiáveis.