T-SQL tem uma função chamada
DATETIMEOFFSETFROMPARTS()
que permite obter um deslocamento de data e hora valor das várias partes separadas de uma data. Especificamente, ele retorna um deslocamento de data e hora valor para a data e hora especificadas e com os deslocamentos e precisão especificados. Exemplos desta função abaixo.
Sintaxe
A sintaxe fica assim:
DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )
Onde:
- Os primeiros 7 argumentos são expressões inteiras que especificam essa parte de data/hora específica.
- O
hour_offset
argumento é uma expressão inteira que especifica a parte da hora do deslocamento do fuso horário. - O
minute_offset
é uma expressão inteira que especifica a parte do minuto do deslocamento do fuso horário. - A
precision
argumento é um literal inteiro que especifica a precisão do offset de data e hora valor a ser devolvido. Esse valor realmente especifica a escala (ou seja, o número de dígitos à direita da casa decimal).
Exemplo
Aqui está um exemplo de uso.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultado:
Result ---------------------------------- 2021-05-10 23:35:29.0500 +12:30
Argumentos inválidos
Você precisa garantir que todos os argumentos sejam válidos, caso contrário, você receberá um erro. Aqui está um exemplo de como fornecer uma parte da hora fora do intervalo (25). A parte da hora só pode estar entre 0 e 24.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 25, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultado:
Cannot construct data type datetimeoffset, some of the arguments have values which are not valid.
Número de argumentos
Você precisa fornecer o número correto de argumentos (10). Se você não fizer isso, você receberá um erro.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10 ) AS Result;
Resultado:
The datetimeoffsetfromparts function requires 10 argument(s).
Argumentos nulos
Se algum dos 9 primeiros argumentos for nulo, o resultado será
NULL
:SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultado:
Result ---------------------------------- NULL
No entanto, se o último argumento (de precisão) for nulo, um erro será retornado:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, NULL ) AS Result;
Resultado:
Scale argument is not valid. Valid expressions for data type datetimeoffset scale argument are integer constants and integer constant expressions.
Consulte também exemplos de DATETIME2FROMPARTS() no SQL Server (T-SQL) para retornar um datetime2 valor (sem o deslocamento).