Partilhar via


DATETIMEOFFSETFROMPARTS (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna um valor datetimeoffset para os argumentos de data e hora especificados. O valor retornado tem uma precisão especificada pelo argumento de precisão e um deslocamento conforme especificado pelos argumentos de deslocamento.

Convenções de sintaxe de Transact-SQL

Sintaxe

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )  

Argumentos

year
Uma expressão de inteiro que especifica um ano.

month
Uma expressão de inteiro que especifica um mês.

day
Uma expressão de inteiro que especifica um dia.

hour
Uma expressão de inteiro que especifica as horas.

minute
Uma expressão de inteiro que especifica os minutos.

segundos
Uma expressão de inteiro que especifica os segundos.

fractions
Uma expressão de inteiro que especifica um valor de segundos fracionário.

hour_offset
Uma expressão de inteiro que especifica a parte de hora da compensação de fuso horário.

minute_offset
Uma expressão de inteiro que especifica a parte de minuto da compensação de fuso horário.

precisão
Um valor literal de inteiro que especifica a precisão do valor datetimeoffset que DATETIMEOFFSETFROMPARTS retornará.

Tipos de retorno

datetimeoffset( precision )

Comentários

DATETIMEOFFSETFROMPARTS retorna um tipo de dados datetimeoffset totalmente inicializado. Os argumentos de deslocamento representam o deslocamento de fuso horário. Para argumentos de deslocamento omitidos, DATETIMEOFFSETFROMPARTS presume um deslocamento de fuso horário de 00:00 – em outras palavras, nenhum deslocamento de fuso horário. Para argumentos de deslocamento especificados, DATETIMEOFFSETFROMPARTS espera valores para os argumentos e os dois valores devem ser positivos ou negativos. Se minute_offset tiver um valor e hour_offset não tiver um valor, DATETIMEOFFSETFROMPARTS gerará um erro. DATETIMEOFFSETFROMPARTS gerará um erro se outros argumentos tiverem valores inválidos. Se pelo menos um dos argumentos necessários tiver um valor NULL, DATETIMEOFFSETFROMPARTS retornará NULL. No entanto, se o argumento precision tiver um valor NULL, DATETIMEOFFSETFROMPARTS gerará um erro.

O argumento fractions depende do argumento precision. Por exemplo, para um valor de 7, cada fração representará 100 nanossegundos; se precision for igual a 3, cada fração representará um milissegundo. Se o valor de precision for zero, o valor de fractions também deverá ser zero; caso contrário, DATETIMEOFFSETFROMPARTS gerará um erro.

Essa função é capaz de ser remota para servidores do SQL Server 2012 (11.x) e acima. Ela não é remota para servidores que têm uma versão anterior ao SQL Server 2012 (11.x).

Exemplos

a. Um exemplo sem frações de um segundo

SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Result;  

Veja a seguir o conjunto de resultados.

Result  
----------------------------------
2010-12-31 14:23:23.0000000 +12:00  
  
(1 row(s) affected)  

B. Exemplo simples com frações de um segundo

Este exemplo demonstra o uso dos parâmetros fractions e precision:

  1. Quando fractions tem um valor igual a 5 e precision tem um valor igual a 1, o valor de fractions representa 5/10 de um segundo.

  2. Quando fractions tem um valor igual a 50 e precision tem um valor igual a 2, o valor de fractions representa 50/100 de um segundo.

  3. Quando fractions tem um valor igual a 500 e precision tem um valor igual a 3, o valor de fractions representa 500/1.000 de um segundo.

SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 5, 12, 30, 1 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 50, 12, 30, 2 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 500, 12, 30, 3 );  
GO  

Veja a seguir o conjunto de resultados.

----------------------------------  
2011-08-15 14:30:00.5 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.50 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.500 +12:30  
  
(1 row(s) affected)  

Confira também

datetimeoffset (Transact-SQL)
AT TIME ZONE (Transact-SQL)