Funções de Data e Hora
Neste post, vamos conhecer várias funções que tratam de data e hora no SQL Server.
Todas as funções descritas neste post estão disponíveis a partir do SQL Server 2008 até a versão 2016, conforme a documentação da Microsoft. Algumas funções, como Getdate(), Month() e Year() já estavam disponíveis na versão 2000, mas para efeitos de registro, prefiro manter a informação de acordo com o site da Microsoft.
As funções EOMONTH() e DATEFROMPARTS() foram liberadas na versão 2012.
Datatypes
O SQL Server possui vários datatypes para data e hora:
GETDATE() e similares
Estas funções retornam a data e a hora do computador no qual a instância do SQL Server é executada:
Vamos ver essas funções em ação:

Observe que a hora retornada pelas funções GetDate(), SysDatetime() e Current_TimeStamp é diferente do retorno de GetUTCDate(), SysUTCDateTime e SysDateTimeOffset. Por quê? O resultado destas três funções é retornado como hora UTC (Tempo Universal Coordenado).
CAST e CONVERT
Estas funções são utilizadas para converter um valor entre certos tipos de dados.
CAST (valor AS tipo de dados)
CONVERT (tipo de dados, valor [numero_de_estilo])
As duas funções convertem o valor de saída no tipo de dados especificado. Na função CONVERT, em alguns casos, teremos um terceiro argumento aonde você pode especificar o estilo da conversão, com relação ao número do estilo, este indica que quando for necessária a conversão de data e hora para uma sequencia de caracteres ou vice-versa, deve ser obedecido certo estilo. Por exemplo, o estilo 103 indica “MM/DD/AAAA” e o numero do estilo 101 indica “MMDDAAAA”.

Neste script, temos todos os estilos de CONVERT:

DATEPART
Esta função retorna um numero que representa a parte solicitada de um determinado valor de data e de hora.
DATEPART (parte, data)
Os valores aceitáveis para o parâmetro parte são:

SWITCHOFFSET e TODATETIMEOFFSET
Esta função ajusta a data/hora passada de acordo com o fuso horário informado. Já TODATETIMEOFFSET mantém a data/hora e acrescenta o fuso horário informado.
SWITCHOFFSET (data e hora, fuso horário)
TODATETIMEOFFSET (data e hora, fuso horário)

DATEADD
Esta função permite adicionar um número específico de unidades de uma parte relativa a data especificada em um valor de data e hora de entrada.
DATEADD (parte, n, data)
Os valores aceitáveis para o parâmetro parte são:

DATEDIFF
Esta função retorna a diferença numérica entre duas datas, considerando uma determinada parte da data.
DATEDIFF (parte, data 1, data 2)
Normalmente, definimos que a Data 1 será menor que a Data 2, para retornarmos um valor positivo. Se Data 1 for maior que Data 2, o resultado da função será negativo.
Os valores aceitáveis para o parâmetro parte são:

YEAR, MONTH e DAY
Estas funções são abreviações da função DATEPART e retornam a representação de inteiro das partes relativas a ano, mês e dia de um valor de data e de hora de entrada.
YEAR (data)
MONTH (data)
DAY (data)

DATENAME
Esta função retorna uma sequência de caracteres que representa a parte de um determinado valor de data e de hora.
DATENAME (parte, valor_data)
Os valores aceitáveis para o parâmetro parte são:

Só um detalhe, a função retornará o nome no idioma do servidor. Por isso o resultado acima está em inglês. Para ter o resultado em português, podemos utilizar o comando:
SET LANGUAGE 'Brazilian'
Obs. 1: No SQL Server, o idioma Brasileiro existe e funciona melhor que o português!
Obs. 2: A troca do idioma utilizando SET LANGUAGE é válida apenas durante a sessão.

Para ver uma lista dos idiomas disponíveis, utilize a view:
SELECT * FROM syslanguages
ISDATE
Esta função aceita uma sequencia de caracteres como entrada e retorna 1 caso ela seja conversível em tipo de dados de data e de hora e, caso contrario, retorna 0.
ISDATE (valor)

EOMONTH()
Disponível a partir do SQL Server 2012, a função EOMONTH retorna o último dia do mês que contém a data especificada com um deslocamento opcional.
EOMONTH (data [, qtd meses a acrescentar] )

DATEFROMPARTS()
Disponível a partir do SQL Server 2012, 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.
DATEFROMPARTS(ano, mês, dia)

Calculando datas
Estes exemplos combinam as funções de datas para calcular algumas informações:

Quero agradecer aos amigos dos grupos de DBA do Whatsapp que me passaram algumas sugestões de melhorias neste artigo, como o registro da versão onde a função está disponível e alguns exemplos mais interessantes.