No SQL Server, o T-SQL
DATENAME()
A função retorna uma string de caracteres que representa a parte de data especificada da data especificada . Por exemplo, você pode passar em 2021-01-07
e fazer com que o SQL Server retorne apenas a parte do mês (January
). O tipo de retorno para
DATENAME()
é nvarchar . Exemplos abaixo.
Sintaxe
O
DATENAME()
sintaxe fica assim:DATENAME ( datepart , date )
Onde
datepart
é a parte de date
(um valor de data ou hora) para o qual uma string de caracteres será retornada. Exemplo 1
Aqui está um exemplo básico onde eu retorno o componente do mês de uma data.
SELECT DATENAME(month, '2021-01-07') AS Result;
Resultado:
+----------+ | Result | |----------| | January | +----------+
Exemplo 2
Neste exemplo eu atribuo uma data a uma variável, então eu uso várias instâncias de
DATEPART()
para recuperar diferentes partes dessa data. DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;
Resultado:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Exemplo 3
Você também pode recuperar as várias partes de tempo da data.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;
Resultado:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Exemplo 4
Você também pode recuperar o
TZoffset
e o ISO_WEEK
datepart. O
TZoffset
é retornado como o número de minutos (assinado). O ISO_WEEK
datepart refere-se ao sistema de data-semana ISO (parte do padrão ISO 8601), que é um sistema de numeração para semanas. DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00'; SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';
Resultado:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 22 | +--------------------+------------+
Neste exemplo, defino a data para um
datetimeoffset
formato, que inclui o deslocamento do fuso horário. O TZoffset
é retornado em minutos. Os resultados de
DATENAME()
muitas vezes será semelhante aos resultados de DATEPART()
(devido à maioria das partes da data serem numéricas). No entanto, DATEPART()
retorna um inteiro em oposição a uma cadeia de caracteres. Portanto DATEPART()
retornará meses (e o componente de dia da semana) em formato numérico (por exemplo, 1
em vez de January
). Como obter o nome curto do mês
Se você precisar do nome do mês, mas em sua forma abreviada de 3 letras (por exemplo,
Jan
em vez de January
), confira meu artigo 5 Ways to Get the Short Month Name from a Date in SQL Server.