Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de DATENAME() no SQL Server


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.

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.