sql >> Database >  >> RDS >> Sqlserver

DATENAME() Voorbeelden in SQL Server

In SQL Server is de T-SQL DATENAME() functie retourneert een tekenreeks die het opgegeven datepart vertegenwoordigt van de opgegeven datum . U kunt bijvoorbeeld doorgeven in 2021-01-07 en laat SQL Server alleen het maandgedeelte retourneren (January ).

Het retourtype voor DATENAME() is nvarchar .

Voorbeelden hieronder.

Syntaxis

De DATENAME() syntaxis gaat als volgt:

DATENAME ( datepart , date )

Waar datepart is het deel van date (een datum- of tijdwaarde) waarvoor een tekenreeks wordt geretourneerd.

Voorbeeld 1

Hier is een eenvoudig voorbeeld waarbij ik de maandcomponent van een datum terugstuur.

SELECT DATENAME(month, '2021-01-07') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| January  |
+----------+

Voorbeeld 2

In dit voorbeeld wijs ik een datum toe aan een variabele, dan gebruik ik meerdere instanties van DATEPART() om verschillende delen van die datum op te halen.

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;

Resultaat:

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | June    | 153           | 2     | 22     | Saturday  |
+--------+-----------+---------+---------------+-------+--------+-----------+

Voorbeeld 3

Je kunt ook de verschillende tijdsdelen uit de datum halen.

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;

Resultaat:

+--------+----------+----------+--------------+---------------+--------------+
| Hour   | Minute   | Second   | Millsecond   | Microsecond   | Nanosecond   |
|--------+----------+----------+--------------+---------------+--------------|
| 8      | 24       | 14       | 311          | 311204        | 311204200    |
+--------+----------+----------+--------------+---------------+--------------+

Voorbeeld 4

U kunt ook de TZoffset . ophalen en de ISO_WEEK datepart.

De TZoffset wordt geretourneerd als het aantal minuten (ondertekend). De ISO_WEEK datepart verwijst naar het ISO-week-datumsysteem (onderdeel van de ISO 8601-standaard) dat een nummeringssysteem is voor weken.

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';

Resultaat:

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| +08:00             | 22         |
+--------------------+------------+

In dit voorbeeld stel ik de datum in op een datetimeoffset formaat, inclusief de tijdzone-offset. De TZoffset wordt binnen enkele minuten geretourneerd.

De resultaten van DATENAME() zal vaak lijken op de resultaten van DATEPART() (omdat de meeste datumdelen numeriek zijn). Echter, DATEPART() retourneert een geheel getal in plaats van een tekenreeks. Daarom DATEPART() retourneert maanden (en de weekdagcomponent) in numerieke vorm (bijv. 1 in plaats van January ).

De naam van de korte maand ophalen

Als u de naam van de maand nodig heeft, maar in de verkorte, drieletterige afkorting (bijvoorbeeld Jan in plaats van January ), bekijk mijn artikel 5 manieren om de korte maandnaam van een datum in SQL Server te krijgen.


  1. MySQL-prestaties verbeteren met geavanceerde InnoDB-instellingen

  2. KOLOM WIJZIGEN in orakel - Hoe controleer ik of een kolom nullable is voordat deze op nullable wordt gezet?

  3. Hoe u SQL-resultaten filtert in een heeft-veel-door-relatie

  4. Hoe vind ik dubbele waarden in een tabel in Oracle?