Aprenda como Manipular Datas no SQL Server

Aprenda como Manipular Datas no SQL ServerOlá pessoal, hoje vou demonstrar algumas funções para manipular datas no SQL Server, meu objetivo é fazer alguns programadores perderem o medo em trabalhar com datas no formato “yyyy-mm-dd” (padrão ANSI), é muito comum encontrarmos campos com datas sendo gravadas como VARCHAR e no formato “dd/mm/yyyy“, essa “gambiarra” é feita para poder exibir de maneira legível para o usuário.

 

Outros posts sobre SQL Server que podem interessar:

Conexão PDO com SQL Server 2008 e 2012 no Ubuntu

Paginação com SQL Server 2008 R2 no PHP

DSN PDO – diversos bancos de dados

 

A maioria dos SGBDs possuem diversas funções para manipular e formatar datas, recentemente publiquei um post sobre como formatar datas no PostgreSQL, MySQL e SQL Server onde a ideia era pegar uma data no padrão ANSI e exibi-lá no formato brasileiro.  Mas decidi aprofundar um pouco mais sobre assunto e nesse post vou demonstrar algumas funções para trabalhar com datas no SQL Server disponibiliza e deixa a vida do programador ainda mais fácil para trabalhar com datas no padrão ANSI.

 

Funções para manipular datas no SQL Server

Primeiro é importante salientar que, campo para gravar datas tem que ser com data type DATE, então já sabemos que as datas serão gravadas no formato “yyyy-mm-dd” e a partir disso vamos realizar cálculos, extrações e formatações. 

Para esse post estou trabalhando com SQL Server 2012, em todos os exemplos vou sempre capturar o valor DATETIME retornado pela função nativa GETDATE() que retorna data e hora do servidor, as operações serão executadas com base na data exibida abaixo:

Retorno da função GETDATE() 

Função DATEPART()

A função DATEPART() retorna um fragmento da data informada, ou seja, ela pode retornar somente o dia, mês e ano, caso seja informado um DATETIME (incluindo hora) podemos obter também é possível obter fragmentos como hora, minuto, segundo e etc.

Post relacionado:  Conexão PDO com SQL Server 2008 e 2012 no Ubuntu | Dica

Essa função recebe 2 parâmetros, o primeiro parâmetro é a “parte” da data que queremos retornar exemplo YEAR, MONTH, DAY e etc., o segundo parâmetro é uma expressão contendo a data que basicamente tem que ser do tipo time, date, smalldatetime, datetime, datetime2 ou datetimeoffset. O retorno dessa função é um valor inteiro, documentação oficial:

 

Função DATEADD()

A função DATEADD() retorna um DATE de acordo com os parâmetros passados, basicamente podemos adicionar ou subtrair datas alterando dia, mês, ano e etc.

Essa função recebe 3 parâmetros, o primeiro parâmetro é a “parte” da data que vamos alterar exemplo YEAR, MONTH, DAY e etc., o segundo parâmetro é um valor inteiro se positivo adiciona ou se negativo subtrai, terceiro parâmetro é uma expressão contendo a data que basicamente tem que ser do tipo time, date, smalldatetime, datetime, datetime2 ou datetimeoffset. Mais informações na documentação oficial:

 

Post relacionado:  Utilizando SQL_CACHE no MySQL

Função DATEDIFF()

A função DATEDIFF() basicamente retorna um valor inteiro contendo a diferença entre a 2 datas passadas como parâmetro, mas pode especificar se queremos essa diferença em dias, meses, anos ou etc.

Essa função recebe 3 parâmetros, o primeiro parâmetro é a “parte” da data que desejamo obter a diferença exemplo YEAR, MONTH, DAY e etc., o segundo parâmetro é uma expressão contendo a data inicial que basicamente tem que ser do tipo time, date, smalldatetime, datetime, datetime2 ou datetimeoffset e o terceiro parâmetro é a data final que desejamos obter a diferença. Mais informações na documentação oficial:

 

Função DATEFROMPARTS()

A função DATEFROMPARTS() foi implementada a partir da versão 2012 do SQL Server, ela constrói uma data e retorna um DATE baseado no ano, mês e dia passados como parâmetro.

Essa função recebe 3 parâmetros com valor inteiro, o primeiro parâmetro representa o ano, o segundo parâmetro representa o mês e o terceiro parâmetro representa o dia. Mas informações na documentação oficial:

 

Formatando Data com a função CONVERT()

Tipo VARCHAR para tipo DATE

Nesse exemplo vamos usar uma data que está como VARCHAR e no formato “dd/mm/yyyy” e converte-lá para DATE no formato “yyyy-mm-dd”:

Post relacionado:  Paginação de Dados no PHP com PDO - Introdução

 

Tipo DATE para tipo VARCHAR

Nesse exemplo vamos usar uma data do tipo DATE no formato  “yyyy-mm-dd” e converte-lá para o tipo VARCHAR no formato “dd/mm/yyyy”:

Observação: Nessa página é possível obter uma listagem completa dos valores que são aceitos no terceiro parâmetro, nesses exemplo usei “103” na conversão, esse parâmetro é conhecido como style.

 

Bom pessoal demonstrei nesse post as principais funções para manipular datas no SQL Server 2012, com o material postado acima o leitor não terá mais dúvidas ou receio em sempre gravar datas no padrão ANSI. Foi possível observar a gama de funcionalidades e operações que podemos executar com funções nativas e o principal de tudo com pouca complexidade, então fica a dica quando forem gravar datas utilizem o data type DATE, não tenham medo!

Se você gostou desse post compartilhe nas redes sociais e até a próxima …

Show Buttons
Hide Buttons