SQLShack (Čeština)

Funkce formátu data SQL, jako je DateDiff Funkce SQL a funkce DateAdd SQL nejsou často používány správci databází, ale mnozí z nás si nikdy nedali čas na úplné pochopení těchto mimořádně užitečných funkcí. Pro profesionály, kteří teprve začínají s SQL Serverem, jsou tyto funkce jedny z prvních, které se seznámí. Doufejme tedy, že tento článek bude mít něco pro každého v celém spektru dovedností.

Jedním z nejzajímavějších datových typů, které jsou podporovány ve světě relačních databází, je DateTime. V tomto článku se podíváme na práci s datovými typy data a času na serveru SQL Server. Budeme rozumět základům datového typu datum a čas a také uvidíme různé příklady dotazování na pole datum a čas pomocí vestavěných funkcí v rámci serveru SQL pro manipulaci s daty a transformaci hodnot data a času a v několika případech proveďte aritmetické operace.

Nejprve se podívejme na několik populárních formátů data a času SQL.

Ve výchozím nastavení SQL Server inherentně podporuje jazyky. které jsou podporovány operačním systémem Windows. V závislosti na národním prostředí a nastavení řazení, když provádíte instalaci serveru SQL Server, může se zobrazení formátu data SQL lišit. Druh dat, která hodláte přehrát, je určen na základě nastavení národního prostředí a nastavení řazení serveru SQL Server.

Na serveru SQL Server má datový typ DATE dva výchozí formáty neutrálního jazyka.

  1. RRRRMMDD

    Následující příklad, HumanResource Tabulka zaměstnance se dotazuje, aby se zobrazil formát data SQL hodnot HireDate.

    1
    2
    3
    4
    5
    6

    POUŽITÍ AdventureWorks2014;
    GO
    VÝBĚR HireDate, BusinessEntityID, LoginID, JobTitle
    Z HumanResources.Employee;
    GO

    Nyní dotaz sloupec HireDate v neutrálním jazykovém formátu. V dotazu předáváme celočíselnou hodnotu, která se skládá z roku 2008; měsíc, 12. a 7. den.

    1
    2
    3

    VÝBĚR HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    KDE HireDate = „20081207“;

    Poznámka: V zásadě to znamená, že vstupní hodnota je číselná; stroj SQL jej interně převede a ve skutečnosti skončí s hodnotou znaku. Je tedy obklopeno jednoduchými uvozovkami.

  2. „MM-DD-YYYY“ (formát založený na USA)

    V tomto formátu data SQL Sloupec HireDate je napájen hodnotami „MM-DD-RRRR“. Toto není celočíselný formát. Spusťme stejný dotaz s novým formátem data SQL vstupní hodnoty „12-07-2008“ do sloupce HireDate. Pojďme tedy spustit následující dotaz a ověřit výstup. Výstupem je stejná sada pěti záznamů.

    1
    2
    3
    4

    VÝBĚR HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    KDE HireDate = „12-07-2008“;
    GO

    Poznámka: Hodnoty formátu neutrálního jazyka jsou implicitní a SQL Server provede potřebnou konverzi. Jakýkoli jiný formát data SQL vyžaduje řádný převod operandů nebo hodnot.

Následující příklady zobrazují chybovou zprávu kvůli nesprávnému použití formátu data SQL.

1
2
3

VÝBĚR HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = „25-12-2008 „;

Nyní je operand i jeho hodnoty převedeny do standardního formátu 103. Další informace o funkcích CAST a Convert najdete zde.Následující příklad vrátí všechny řádky zaměstnance, kde HireDate 25 -12-2008

Nyní pojďme začněte se zabývat některými datovými funkcemi, které nám SQL Server zpřístupňuje, a tyto datové funkce nám umožňují pracovat s různými částmi dat a dokonce manipulovat s některými funkcemi, se kterými můžeme pracovat, pokud jde o data.

Podívejme se na funkci DATEPART SQL. Tato funkce vrací celočíselnou hodnotu ze zadaného sloupce data.

Dotaz na sloupec HireDate, aby vrátil pouze roční část data.

Následující příklad vygeneruje celočíselný výstupní sloupec s názvem a tento by měl vrátit pouze roční hodnoty

1
2
3

VYBERTE DATEPART (YEAR, HireDate) AS
Z HumanResources.Employee;
GO

Dotaz na datum HireDate sloupec pro vrácení pouze měsíční části data

Následující příklad vygeneruje celočíselný výstupní sloupec s názvem, který by měl vrátit pouze hodnoty měsíce

1
2

VYBERTE DATEPART (MĚSÍC, HireDate) AS
FROM HumanResources.Employee;

Dotazem na sloupec HireDate vrátíte pouze čtvrtletní část datum

Následující příklad generuje celočíselný výstupní sloupec s názvem a ten by měl vracet pouze měsíční hodnoty

1
2
3

ZVOLTE DATEPART (ČTVRTLETÍ, HireDate) AS
Z HumanResources.Employee;
GO

Následující příklad vrátí podrobnosti o prodeji pro konkrétní den pole orderDate. Příklad také ukazuje použití funkce DATEPART SQL a jejích několika přidružených argumentů.

Příkaz SELECT vybere DATEPART, což je název funkce, a do závorek vezme dva argumenty. Nejprve argument datepart a druhý výraz date.

Pojďme se podívat na použití funkce DATENAME SQL. Je to podobné jako s funkcí DATEPART SQL, ale vrací znakový řetězec ze zadaného pole data.

Dále se podívejme na deterministické funkce, které vracejí části data a času jako celočíselnou hodnotu. Následující příklad vrací celočíselné hodnoty z pole OrderDate pro odpovídající funkce YEAR a MONTH.

Výstupem je agregovaná hodnota prodeje TotalSales na základě měsíčních tržeb.

Nyní pojďme pohled na několik dalších různých funkcí. A ten, na který se podíváme, se jmenuje DATEDIFF. Funkce DATEDIFF SQL vrací celočíselnou hodnotu se znaménkem, která nám umožňuje určit uplynulý čas mezi dvěma daty.

Pojďme si pohrát s dotazem, abychom použili různé datové části k zobrazení výsledků.

Následující příklad vrací časové části mezi dvěma poli DateTime. V tomto příkladu se hodiny, minuty a sekundy mezi hodnotami DateTime počítají pomocí funkce SQL DATEDIFF

Jak použít funkci DATEDIFF SQL v klauzuli where

Následující příklad vrátí všechny zaměstnance, kteří s organizací pracují déle než 10 let. Podmíněná logika ve sloupci HireDate je porovnávána s více než 120 měsíci, která je uvedena v klauzuli where.

1
2
3
4

SELECT *
FROM HumanResources.Employee
WHERE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
GO

Jak používat funkci DateDiff SQL s funkcí agregace

Následující příklad vrací počet let mezi prvním datem pronájmu a poslední datum pronájmu. V tomto případě hledáme minimální HireDate a maximální agregovanou funkci HireDate použitou jako vstupní parametry pro funkci DATEDIFF SQL.S těmito hodnotami lze snadno zjistit počet let mezi prvním a posledním zaměstnáním.

1
2

VYBRAT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FROM HumanResources.Employee;

Podívejme se na funkci SQL DATEADD. Funkce přidají nebo odečtou hodnotu k zadanému datovému dílu a vrátí upravenou hodnotu datového dílu.

Podívejme se na následující příklad. Hodnota 1 se přidá k různým datovým částem a hodnota -1 se přidá k hodinové datové části a -30 se přidá k minutové datové části.

Na výstupu vidíme, že hodnota je provozována na Funkce GETDATE () podle definované části data.

Poznámka: Funkci SQL DATEADD a DATEDIFF lze použít ve funkci SELECT, Klauzule WHERE, HAVING, GROUP BY a ORDER BY.

Datadiff vs Datediff_BIG

To je zatím vše v tomto článku o formátu data … h2>

Zatím jsme viděli velmi důležité funkce formátu data SQL, jako je DATEPART, DATENAME, YEAR, MONTH a DAY, se zvláštním důrazem na funkci DATEADD SQL a funkci DATEDIFF SQL. Funkce formátu data SQL na serveru SQL jsou opravdu silné a skutečně pomáhají poskytovat působivou analýzu dat a zprávy. V některých případech jde o úpravu nastavení řazení, nastavení polohy, jednoduše opětovné nastavení vstupního proudu textové hodnoty nebo o opravu, která by způsobila, že zdroj dat postačí problém s datem a časem.

Doporučuje se používat neutrální jazykový formát, protože ve většině případů funguje lépe. Nakonec vidíme rozdíl mezi funkcí DATEDIFF SQL a funkcí DATEDIFF_BIG SQL. Doufám, že se vám tento článek líbí. Pokud máte nějaké dotazy, neváhejte komentovat níže

  • autor
  • Poslední příspěvky
Jsem databázový technolog, který má více než 11 let bohaté praktické zkušenosti s databázovými technologiemi. Jsem Microsoft Certified Professional a mám titul v oboru počítačových aplikací.
Moje specializace spočívá v navrhování & implementace řešení vysoké dostupnosti a migrace DB mezi platformami. Aktuálně fungující technologie jsou SQL Server, PowerShell, Oracle a MongoDB.
Zobrazit všechny příspěvky od Prashanth Jayaram

Poslední příspěvky od Prashanth Jayaram (zobrazit všechny)
  • Stručný přehled auditu databáze v SQL – 28. ledna 2021
  • Jak nastavit Azure Data Sync mezi databázemi Azure SQL a místním SQL Serverem – 20. ledna 2021
  • Jak provádět operace importu a exportu databáze Azure SQL pomocí PowerShellu – 14. ledna , 2021

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *