O
SYSDATETIME()
A função retorna a data e hora atuais como datetime2(7) valor. Esse valor é derivado do sistema operacional do computador em que a instância do SQL Server está sendo executada. Este artigo fornece exemplos do
SYSDATETIME()
função, incluindo como você pode usá-lo com outras funções para retornar o valor que você está interessado. Sintaxe
Primeiro, aqui está a sintaxe:
SYSDATETIME ( )
Portanto, esta função não aceita nenhum argumento. Você simplesmente o chama sem nenhum argumento.
Exemplo
Aqui está um exemplo básico de como usar um
SELECT
instrução para retornar a data e hora atuais de SYSDATETIME()
:SELECT SYSDATETIME() AS Result;
Resultado:
+-----------------------------+ | Result | |-----------------------------| | 2018-06-15 23:09:13.5852199 | +-----------------------------+
Então, como mencionado, ele retorna um datetime2(7) valor. O datetime2 o tipo de dados tem um período maior e uma precisão fracionária padrão maior do que o datetime tipo de dados (que é o tipo de dados que
GETDATE()
retorna – veja SYSDATETIME() vs GETDATE():Qual é a diferença?). Extrair uma parte da data
Se você quiser apenas uma parte do valor de retorno, você pode usar
DATEPART()
para retornar apenas a parte da data/hora em que você está interessado. Exemplo:
SELECT DATEPART(month, SYSDATETIME()) AS Result;
Resultado:
+----------+ | Result | |----------| | 6 | +----------+
Às vezes, há mais de uma maneira de obter o mesmo resultado no SQL Server. Aqui está outro exemplo usando o
MONTH()
função:SELECT MONTH(SYSDATETIME()) AS Result;
Resultado:
+----------+ | Result | |----------| | 6 | +----------+
Ambas as funções retornaram o mês atual. Mas eles os retornaram como um número inteiro representando o número do mês.
Se você quiser o mês nome retornado, você pode usar
DATENAME()
:SELECT DATENAME(month, SYSDATETIME()) AS Result;
Resultado:
+----------+ | Result | |----------| | June | +----------+
Formatar a data
Você também pode usar outras funções T-SQL para formatar a data conforme necessário.
Aqui está um exemplo de uso do
FORMAT()
função para formatar o resultado:SELECT FORMAT(SYSDATETIME(), 'd', 'en-US') AS 'd, en-US', FORMAT(SYSDATETIME(), 'd', 'en-gb') AS 'd, en-gb', FORMAT(SYSDATETIME(), 'D', 'en-US') AS 'D, en-US', FORMAT(SYSDATETIME(), 'D', 'en-gb') AS 'D, en-gb';
Resultado:
+------------+------------+-----------------------+--------------+ | d, en-US | d, en-gb | D, en-US | D, en-gb | |------------+------------+-----------------------+--------------| | 6/15/2018 | 15/06/2018 | Friday, June 15, 2018 | 15 June 2018 | +------------+------------+-----------------------+--------------+
Mais exemplos em Como formatar a data e a hora no SQL Server.
Incrementando o valor e encontrando a diferença
Você pode usar funções como
DATEDIFF()
para retornar a diferença entre a data atual e outra data. Aqui está um exemplo de uso de
DATEADD()
para adicionar um mês à data atual, descobrindo a diferença em dias:DECLARE @date1 datetime2 = SYSDATETIME(); DECLARE @date2 datetime2 = DATEADD(month, 1, SYSDATETIME()); SELECT DATEDIFF(day, @date1, @date2) AS Result;
Resultado:
+----------+ | Result | |----------| | 30 | +----------+