No SQL Server, o
DATETIME2FROMPARTS()
A função funciona de maneira semelhante à DATETIMEFROMPARTS()
função, exceto que ela aceita 8 argumentos e retorna um datetime2 valor. O DATETIMEFROMPARTS()
por outro lado, aceita apenas 7 argumentos e retorna um datetime valor. Basicamente, você fornece todas as partes de data/hora e esta função retornará um datetime2 valor com base nas peças que você fornece.
Sintaxe
Primeiro, aqui está a sintaxe:
DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )
Onde cada um dos primeiros 7 argumentos é uma expressão inteira que especifica essa parte da data. Por exemplo,
year
é um número inteiro que especifica a parte do ano da data. O oitavo argumento é uma expressão inteira que permite definir a precisão do valor de retorno. Este valor especifica a escala (ou seja, o número de dígitos à direita da casa decimal).
Exemplo
Segue um exemplo de uso:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 4 ) AS Result;
Resultado:
+--------------------------+ | Result | |--------------------------| | 2021-05-10 23:35:29.0500 | +--------------------------+
Valores inválidos
Todos os argumentos precisam ser valores válidos. Por exemplo, você não pode especificar um mês de 13 ou um valor de minutos de 61.
Aqui está um exemplo em que especifico um valor de mês de 13:
SELECT DATETIME2FROMPARTS( 2021, 13, 10, 23, 35, 29, 500, 4 ) AS Result;
Resultado:
Cannot construct data type datetime2, some of the arguments have values which are not valid.
Número de argumentos
Você também precisa fornecer o número correto de argumentos (8):
SELECT DATETIME2FROMPARTS( 2021, 05, 10 ) AS Result;
Resultado:
The datetime2fromparts function requires 8 argument(s).
Valores nulos
Se você fornecer um valor nulo para qualquer um dos primeiros 7 argumentos, o resultado será NULL:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 4 ) AS Result;
Resultado:
+----------+ | Result | |----------| | NULL | +----------+
No entanto, fornecer um valor nulo para o 8º argumento (que especifica a precisão/escala) resulta em um erro:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, NULL ) AS Result;
Resultado:
Scale argument is not valid. Valid expressions for data type datetime2 scale argument are integer constants and integer constant expressions.