SQLShack (Português)

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

  1. AAAAMMDD

    O exemplo a seguir, o HumanResource . A tabela de empregado é consultada para ver o formato de data SQL dos valores HireDate

    1
    2
    3
    4
    5
    6

    USE AdventureWorks2014;
    GO
    SELECIONE HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee;
    GO

    Agora, 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.

    1
    2
    3

    SELECIONE HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    ONDE 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

  2. 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.

    1
    2
    3
    4

    SELECIONE HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    ONDE HireDate = “12-07-2008”;
    GO

    Observaçã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
Sou um tecnólogo de banco de dados, com mais de 11 anos de experiência rica e prática em tecnologias de banco de dados. Sou Microsoft Certified Professional e tenho um diploma em Master of Computer Application.
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

Postagens mais recentes de Prashanth Jayaram (ver todos)
  • 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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *