Pesquisa de site

SQL entre, MySQL entre datas, não entre


O operador SQL BETWEEN é usado junto com os operadores SQL IN usados de maneira sequencial. Os valores são definidos como parte do intervalo BETWEEN são inclusivos, ou seja, os valores mencionados no intervalo são incluídos nos valores inicial e final. Vamos discutir em detalhes sobre o operador BETWEEN. Conforme mencionado acima, o operador BETWEEN pode ser usado junto com valor numérico, valor de texto e data. Discutiremos todos os três em detalhes abaixo.

SQL Entre Sintaxe

SELECT Column(s) FROM table_name WHERE column BETWEEN value1 AND value2;

Usando a sintaxe mencionada acima, podemos definir valores como parte do operador BETWEEN. Além disso, a sintaxe mencionada acima permanece a mesma para uso com valor numérico, valor de texto e valor de data.

Operador SQL BETWEEN para valor numérico

Vamos entender a sintaxe acima mencionada com mais detalhes através de alguns exemplos de valor numérico. Vamos considerar a seguinte tabela Aluno para fins de exemplo.

RollNo StudentName StudentGender StudentAge StudentPercent AdmissionDate
1 George M 14 85 2018-01-01
2 Monica F 12 88 2018-01-31
3 Jessica F 13 84 2018-01-15
4 Tom M 11 78 2017-12-15

Estou usando o banco de dados MySQL e aqui está o script para criar e inserir registros de exemplo na tabela Aluno.

CREATE TABLE `Student` (
  `rollno` int(11) unsigned NOT NULL,
  `studentname` varchar(20) DEFAULT NULL,
  `studentgender` varchar(5) DEFAULT NULL,
  `studentage` int(3) DEFAULT NULL,
  `studentpercent` int(3) DEFAULT NULL,
  `admissiondate` date DEFAULT NULL,
  PRIMARY KEY (`rollno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Student` (`rollno`, `studentname`, `studentgender`, `studentage`, `studentpercent`, `admissiondate`)
VALUES
	(1, 'George', 'M', 14, 85, '2018-01-01'),
	(2, 'Monica', 'F', 12, 88, '2018-01-31'),
	(3, 'Jessica', 'F', 13, 84, '2018-01-15'),
	(4, 'Tom', 'M', 11, 78, '2017-12-15');

Cenário: obtenha a porcentagem de alunos com idade entre 11 e 13 anos.

SELECT StudentPercent FROM Student WHERE StudentAge BETWEEN 11 AND 13;

Saída:

StudentPercent
88
84
78

Operador SQL NOT BETWEEN para valor numérico

O operador SQL NOT BETWEEN é usado para obter os valores como parte do conjunto de resultados que está fora do intervalo especificado pelo operador BETWEEN. Cenário: obtenha a porcentagem de alunos cuja idade não está entre 11 e 13 anos.

SELECT StudentPercent FROM Student WHERE StudentAge NOT BETWEEN 11 AND 13;

Saída:

StudentPercent
85

Operador SQL BETWEEN para valor de texto

Cenário: obtenha RollNo, StudentName e StudentAge, onde StudentName está entre George e Jessica.

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName BETWEEN 'George' AND 'Jessica';

Saída:

RollNo StudentName StudentAge
1 George 14
3 Jessica 13

Operador SQL NOT BETWEEN para valor de texto

Cenário: Obtenha RollNo, StudentName e StudentAge onde StudentName não está entre George e Jessica.

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName NOT BETWEEN 'George' AND 'Jessica';

Saída:

RollNo StudentName StudentAge
2 Monica 12
4 Tom 11

Operador SQL BETWEEN para valor de data

Cenário: obtenha a idade dos alunos cuja admissão é entre 1º de janeiro de 2018 e 31 de janeiro de 2018.

SELECT StudentAge FROM Student WHERE admissiondate BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

Saída:

StudentAge
14
12
13

SQL NOT BETWEEN Operador para valor de data

Cenário: obtenha a idade dos alunos cuja admissão não é entre 1º de janeiro de 2018 e 31 de janeiro de 2018.

SELECT StudentAge FROM Student WHERE admissiondate NOT BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

Saída:

StudentAge
11

MÚLTIPLOS ENTRE operadores

Também podemos usar múltiplos operadores. Sua sintaxe é:

SELECT Column(s) FROM table_name WHERE 
column_name BETWEEN value1 AND value2 
AND 
column_name BETWEEN value3 and value4 
... 
AND 
BETWEEN column_name BETWEEN valueN and valueM;

Usando a sintaxe mencionada acima, podemos usar vários operadores BETWEEN. Cenário: Pegue o nome do aluno com idade entre 10 e 13 anos e notas entre 80 a 85 por cento.

SELECT StudentName FROM Student WHERE 
StudentAge BETWEEN 10 AND 13 
AND
StudentPercent BETWEEN 80 AND 85;