Páginas filhas
  • BD0026_Nível_de_Compatibilidade_SQL_Server_2016_(130)

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Além disso, quando o tempo da data foi comparado com outro tipo temporal, o valor arredondado foi usado. Este script mostra que o resultado do predicado de igualdade é verdadeiro depois que o valor de data e hora é convertido em datetime2.

 

--Este Script altera o nível de compatibilidade para as versões anteriores
ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 | 110 | 120 }
GO
--Este script imprime o predicado IGUAL
e
é verdadeiro
DECLARE @DateTime datetime = '2016-01-01T00:00:00.003';
DECLARE @DateTime2 datetime2(7) = @DateTime;
IF @DateTime = @DateTime2 PRINT 'A igualdade entre @DateTime e @DateTime2 é verdadeira' ELSE PRINT 'A igualdade entre @DateTime e @DateTime2 não é verdadeira';
IF @DateTime < @DateTime2 PRINT 'O @DateTime é menor que o @DateTime2' ELSE PRINT 'O @DateTime não é menor que o @DateTime2';
IF @DateTime > @DateTime2 PRINT 'O @DateTime é maior que o @DateTime2' ELSE PRINT 'O @DateTime não é maior que o @DateTime2';
GO
--Este script imprime o predicado IGUAL
e
é verdadeiro
DECLARE @DateTime datetime = '2016-01-01T00:00:00.007';
DECLARE @DateTime2 datetime2(7) = @DateTime;
IF @DateTime = @DateTime2 PRINT 'A igualdade entre @DateTime e @DateTime2 é verdadeira' ELSE PRINT 'A igualdade entre @DateTime e @DateTime2 não é verdadeira';
IF @DateTime < @DateTime2 PRINT 'O @DateTime é menor que o @DateTime2' ELSE PRINT 'O @DateTime não é menor que o @DateTime2';
IF @DateTime > @DateTime2 PRINT 'O @DateTime é maior que o @DateTime2' ELSE PRINT 'O @DateTime não é maior que o @DateTime2';
GO

 

Alteração de comportamento do SQL Server 2016

...

Esteja ciente do que a precisão de data / data cheia completa (em vez do valor arredondado) também é usada ao avaliar predicados envolvendo um tipo de data e hora. A precisão total de ambos os argumentos é usada, resultando no predicado de comparação de igualdade para avaliar falso em ambos os scripts abaixo. O maior do que o predicado é verdadeiro no primeiro script e o menor que o predicado é verdadeiro no segundo:


--Este Script altera o nível de compatibilidade para as versão do SQL Server 2016
ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 130
--Este script imprime o predicado IGUAL
e
não é verdadeiro
DECLARE @DateTime datetime = '2016-01-01T00:00:00.003';
DECLARE @DateTime2 datetime2(7) = @DateTime;
IF @DateTime = @DateTime2 PRINT 'A igualdade entre @DateTime e @DateTime2 é verdadeira' ELSE PRINT 'A igualdade entre @DateTime e @DateTime2 não é verdadeira';
IF @DateTime < @DateTime2 PRINT 'O @DateTime é menor que o @DateTime2' ELSE PRINT 'O @DateTime não é menor que o @DateTime2';
IF @DateTime > @DateTime2 PRINT 'O @DateTime é maior que o @DateTime2' ELSE PRINT 'O @DateTime não é maior que o @DateTime2';
GO
--Este script imprime o predicado IGUAL
e
não é verdadeiro
DECLARE @DateTime datetime = '2016-01-01T00:00:00.007';
DECLARE @DateTime2 datetime2(7) = @DateTime;
IF @DateTime = @DateTime2 PRINT 'A igualdade entre @DateTime e @DateTime2 é verdadeira' ELSE PRINT 'A igualdade entre @DateTime e @DateTime2 não é verdadeira';
IF @DateTime < @DateTime2 PRINT 'O @DateTime é menor que o @DateTime2' ELSE PRINT 'O @DateTime não é menor que o @DateTime2';
IF @DateTime > @DateTime2 PRINT 'O @DateTime é maior que o @DateTime2' ELSE PRINT 'O @DateTime não é maior que o @DateTime2';
GO


Para fornecer informações sobre por que as comparações resultam em maior e menor que, respectivamente, o script abaixo mostra o valor de nanossegundos dos tipos de dados comparados:

...