Funções de formato de data SQL como DateDiff A função SQL e a função DateAdd SQL são frequentemente utilizadas por DBAs, mas muitos de nós nunca dedicamos tempo para compreender totalmente esses recursos extremamente úteis. Para profissionais que estão começando a usar o SQL Server, essas funções são algumas das primeiras com as quais se familiarizam. Então, esperançosamente, este artigo terá algo para todos em todo o espectro de habilidades
Um dos tipos de dados mais interessantes que são suportados no mundo do banco de dados relacional é DateTime. Neste artigo, vamos dar uma olhada em como trabalhar com tipos de dados de data e hora no SQL Server. Vamos entender os fundamentos do tipo de dados de data e hora e também veremos vários exemplos de como consultar os campos de data e hora usando funções integradas no SQL Server para manipular os dados, transformando valores de data e hora e, em alguns casos, realizar operações aritméticas.
Primeiro, vamos dar uma olhada em alguns formatos de data e funções de hora SQL populares.
Por padrão, o SQL Server suporta inerentemente as linguagens que são suportados pelo sistema operacional Windows. Dependendo das configurações de localidade e agrupamento ao fazer a instalação do SQL Server, a exibição do formato de data do SQL pode ser diferente. O tipo de dados que você vai reproduzir é determinado com base na configuração de local e na configuração de agrupamento do SQL Server.
No SQL Server, o tipo de dados DATE tem dois formatos de linguagem neutra padrão
-
AAAAMMDD
O exemplo a seguir, o HumanResource . A tabela de empregado é consultada para ver o formato de data SQL dos valores HireDate
123456USE AdventureWorks2014;GOSELECIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.Employee;GOAgora, consulte a coluna HireDate usando formato de linguagem neutra. Na consulta, estamos passando um valor inteiro que consiste no ano de 2008; mês, 12 e 7º dia.
123SELECIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeONDE HireDate = “20081207”;Nota: Basicamente, significa que o valor de entrada é numérico; o mecanismo SQL o converte internamente e acaba com um valor de caractere. Portanto, está entre aspas simples
-
MM-DD-AAAA (formato baseado nos EUA)
Neste formato de data SQL, o A coluna HireDate é alimentada com os valores MM-DD-YYYY. Este não é um formato de número inteiro. Vamos executar a mesma consulta com o novo formato de data SQL do valor de entrada ‘12 -07-2008 ’para a coluna HireDate. Então, vamos executar a consulta a seguir e verificar a saída. A saída é o mesmo conjunto de cinco registros.
1234SELECIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeONDE HireDate = “12-07-2008”;GOObservação: os valores de formato de linguagem neutra são implícitos e o SQL Server fará a conversão necessária. Qualquer outro formato de data SQL requer uma conversão adequada de operandos e / ou valores.
Os exemplos a seguir exibem uma mensagem de erro devido ao uso impróprio do formato de data SQL.
1
2
3
|
SELECIONE HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = “25-12-2008 “;
|
Agora, o operando e seus valores são convertidos para um formato padrão 103. Você pode consultar aqui para obter mais informações sobre as funções CAST e Converter.O exemplo a seguir retorna todas as linhas do funcionário onde HireDate 25 -12-2008
Agora vamos comece dando uma olhada em algumas das funções de data que o SQL Server disponibiliza para nós e essas funções de data nos permitem trabalhar com as diferentes partes das datas e até mesmo manipular algumas das funcionalidades com as quais podemos trabalhar em termos de datas.
Vejamos a função DATEPART SQL. Esta função retorna um valor inteiro da coluna de data especificada
Consulte a coluna HireDate para retornar apenas a parte do ano da data
O exemplo a seguir gera uma coluna de saída inteira chamada, e este deve retornar apenas os valores do ano
1
2
3
|
SELECIONE A DATEPART (YEAR, HireDate) AS
FROM HumanResources.Employee;
GO
|
Consulte o HireDate coluna para retornar apenas a parte do mês da data
O exemplo a seguir gera uma coluna de saída de número inteiro chamada e deve retornar apenas os valores do mês
1
2
|
SELECIONE DATEPART (MÊS, Data de Contratação) AS
FROM HumanResources.Employee;
|
Consulte a coluna HireDate para retornar apenas a parte do trimestre de a data
O exemplo a seguir gera uma coluna de saída de número inteiro chamada e ela deve retornar apenas os valores do mês
1
2
3
|
SELECIONE DATEPART (QUARTER, HireDate) AS
FROM HumanResources.Employee;
GO
|
O exemplo a seguir retorna os detalhes de vendas para o dia específico do campo orderDate. O exemplo também mostra o uso da função DATEPART SQL e seus poucos argumentos associados.
A instrução SELECT seleciona DATEPART, que é o nome da função, e leva dois argumentos entre parênteses. Primeiro, o argumento da parte da data e o segundo, a expressão da data.
Vamos dar uma olhada em como usar a função DATENAME SQL. É semelhante a uma função DATEPART SQL, mas retorna uma sequência de caracteres do campo de data especificado.
A seguir, vamos dar uma olhada nas funções determinísticas que retornam partes de data e hora como um valor inteiro. O exemplo a seguir retorna valores inteiros do campo OrderDate para as funções YEAR e MONTH correspondentes.
A saída é um valor agregado do TotalSales com base nas vendas mensais.
Agora, vamos pegar uma olhada em algumas outras funções diferentes. E este que vamos ver é chamado DATEDIFF. A função SQL DATEDIFF retorna um valor inteiro assinado que nos permite determinar o tempo decorrido entre duas datas.
Vamos brincar com a consulta para usar partes de datas diferentes para ver os resultados.
O exemplo a seguir retorna as partes do tempo entre os dois campos DateTime. Neste exemplo, horas, minutos e segundos entre os valores DateTime são calculados usando a função SQL DATEDIFF
Como para usar a função SQL DATEDIFF na cláusula where
O exemplo a seguir retorna todos os funcionários que estão trabalhando na organização por mais de 10 anos. A lógica condicional na coluna HireDate é comparada com mais de 120 meses e é mencionada na cláusula where.
1
2
3
4
|
SELECIONE *
FROM HumanResources.Employee
ONDE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
GO
|
Como usar a função DateDiff SQL com uma função Aggregate
O exemplo a seguir retorna o número de anos entre a primeira data de contratação e a última data de contratação. Nesse caso, estamos procurando a função de agregação HireDate mínima e a função máxima de HireDate usadas como parâmetros de entrada para a função SQL DATEDIFF.Com esses valores, pode-se facilmente encontrar o número de anos que existiram entre a primeira contratação e a última contratação.
1
2
|
SELECT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FROM HumanResources.Employee;
|
Vamos dar uma olhada na função SQL DATEADD. As funções adicionam ou subtraem o valor da parte da data especificada e retornam o valor modificado da parte da data.
Vamos dar uma olhada no exemplo a seguir. O valor 1 é adicionado às várias partes da data e o valor -1 é adicionado à parte da data da hora e -30 é adicionado à parte da data do minuto.
Na saída, podemos ver que o valor é operado no GETDATE () funciona de acordo com a parte da data definida.
Nota: As funções DATEADD e DATEDIFF SQL podem ser usadas no SELECT, Cláusulas WHERE, HAVING, GROUP BY e ORDER BY.
Datadiff vs Datediff_BIG
Isso é tudo por agora neste artigo sobre formato de data SQL…
Conclusão
Até agora, vimos funções de formato de data SQL muito importantes, como DATEPART, DATENAME, YEAR, MONTH e DAY, com ênfase particular na função SQL DATEADD e na função SQL DATEDIFF. As funções de formato de data SQL no servidor SQL são realmente poderosas e realmente ajudam a fornecer análises e relatórios de dados impactantes. Em alguns casos, é uma questão de ajustar as configurações de agrupamento, configurações de localização, simplesmente reajustar o fluxo de entrada do valor do texto ou a correção feita na fonte de dados seria suficiente para o problema de data e hora.
É recomendado usar o formato de linguagem neutra porque funciona melhor na maioria dos casos. Por fim, vemos a diferença entre a função SQL DATEDIFF e a função SQL DATEDIFF_BIG. Eu espero que você goste deste artigo. Se você tiver alguma dúvida, não hesite em comentar abaixo
- Autor
- Postagens recentes
Minha especialidade é projetar & implementação de soluções de alta disponibilidade e migração de banco de dados entre plataformas. As tecnologias atualmente em funcionamento são SQL Server, PowerShell, Oracle e MongoDB.
Veja todas as postagens de Prashanth Jayaram
- Uma rápida visão geral da auditoria de banco de dados em SQL – 28 de janeiro de 2021
- Como configurar o Azure Data Sync entre os bancos de dados Azure SQL e o SQL Server local – 20 de janeiro de 2021
- Como realizar operações de importação / exportação de banco de dados Azure SQL usando o PowerShell – 14 de janeiro , 2021