Transact-SQL inclui um monte de funções que nos ajudam a trabalhar com datas e horas. Uma das tarefas mais comuns ao trabalhar com datas é extrair as diferentes partes da data. Por exemplo, às vezes só queremos o ano, ou o mês. Outras vezes podemos querer o dia da semana. De qualquer forma, existem muitas maneiras de fazer isso no servidor SQL.
em particular, as seguintes funções permitem que você retorne o dia, mês e ano a partir de uma data no servidor SQL.,
-
DAY()
MONTH()
eYEAR()
DATEPART()
DATENAME()
FORMAT()
Estas funções são explicadas abaixo.
o dia(), mês () e ano() funções
a forma mais óbvia de retornar o dia, mês e ano a partir de uma data é usar as funções T-SQL do mesmo nome. Sim, T-SQL tem funções construídas especificamente para o propósito de retornar estes três conjuntos de dados.,
Aqui está um exemplo de como eles funcionam:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DAY(@date) AS DAY, MONTH(@date) AS MONTH, YEAR(@date) AS YEAR;
Resultado:
+-------+---------+--------+| DAY | MONTH | YEAR ||-------+---------+--------|| 2 | 6 | 2018 |+-------+---------+--------+
Estas funções retornam o datepart como um número inteiro. Eles retornam o mesmo resultado que a função DATEPART()
retorna para o datepart especificado.
a função DATEPART ()
a DATEPART()
foi construída especificamente para devolver as partes especificadas de uma data., Portanto, pode-se usar esta função para retornar exatamente o mesmo resultado que o exemplo anterior:
Resultado:
+-------+-----------+---------+--------+| DAY | WEEKDAY | MONTH | YEAR ||-------+-----------+---------+--------|| 2 | 7 | 6 | 2018 |+-------+-----------+---------+--------+
Uma das vantagens de utilizar esta função é que você também pode voltar em outras partes da data e hora. Como você pode ver, com este exemplo, eu retornei a semana, dia a dia (day
é o dia do mês, weekday
é o dia da semana). Você também pode devolver as várias partes do tempo, tais como Minutos, Segundos, milisegundos, etc. Para mais exemplos, veja DATEPART()
exemplos no servidor SQL.,
a função DATEPART()
devolve o seu resultado como um inteiro, pelo que não poderá obter o nome do mês ou o nome do dia da semana a partir da data. Mas não se preocupe, você pode usar as funções DATENAME()
ou FORMAT()
para isso.
a função DATENAME ()
a função DATENAME()
é semelhante à função , excepto que devolve o resultado como uma cadeia de caracteres em vez de um inteiro., DATENAME()
também retorna mês e Dia da semana como seu nome completo, em vez de seu valor numérico.
Exemplo:
Resultado:
+-------+-----------+---------+--------+| DAY | WEEKDAY | MONTH | YEAR ||-------+-----------+---------+--------|| 2 | Saturday | June | 2018 |+-------+-----------+---------+--------+
Para mais exemplos desta função, consulte DATENAME()
Exemplos no SQL Server.
the FORMAT () Function
We can use the FORMAT()
function to return the same values as with the DATENAME()
, and more.
Esta é uma função mais versátil do que as anteriores. Ele permite que você formate data / hora, bem como valores numéricos como strings., O valor de retorno é nvarcar ou nulo (dependendo da entrada), e o comprimento da cadeia é determinado pelo formato especificado.
FORMAT()
também fornece mais opções para como o datepart é apresentado. Você pode especificar se deve mostrá-lo como um único personagem, dois caracteres, três, quatro, e até mesmo Cinco em alguns casos.
Aqui estão exemplos para demonstrar.,resultado:
+-----+------+-------+--------+| M | MM | MMM | MMMM ||-----+------+-------+--------|| 6 | 06 | Jun | June |+-----+------+-------+--------+
resultado:
tenha a opção de formatar a porção do ano como cinco dígitos.
sobre o número de dígitos
ao retornar um datepart em forma de dígito, o especificador de formato determina o número mínimo de dígitos a retornar., Por exemplo, ao usar yyy
, o ano será devolvida como três dígitos se o ano é 0008
mas como quatro dígitos se o ano é 2008
.
exemplo:
resultado:
+-----+------+-------+--------+---------+| y | yy | yyy | yyyy | yyyyy ||-----+------+-------+--------+---------|| 8 | 08 | 008 | 0008 | 00008 |+-----+------+-------+--------+---------+
também, ao usar a única opção (por exemplo,d
) como especificador de data, terá de adicionar um espaço se só quiser que o datepart seja devolvido por si próprio. Se não fizeres isto, vais ter mais do que um único datepart.,
Exemplo:
Resultado:
+---------+------------+---------+------------+---------+------------+| Space | No Space | Space | No Space | Space | No Space ||---------+------------+---------+------------+---------+------------|| 2 | 6/2/2008 | 6 | June 2 | 8 | June 2008 |+---------+------------+---------+------------+---------+------------+
Para mais FORMAT()
exemplos, consulte Como Formatar Data e Hora no SQL Server.