SQLShack (Polski)

Format daty SQL działa jak DateDiff Funkcje SQL i funkcja DateAdd SQL są często używane przez administratorów baz danych, ale wielu z nas nigdy nie poświęciło czasu, aby w pełni zrozumieć te niezwykle przydatne funkcje. Dla profesjonalistów dopiero rozpoczynających pracę z SQL Server te funkcje są jednymi z pierwszych, które poznają. Miejmy nadzieję, że w tym artykule każdy znajdzie coś dla siebie w zakresie umiejętności

Jednym z najbardziej interesujących typów danych obsługiwanych w świecie relacyjnych baz danych jest DateTime. W tym artykule przyjrzymy się pracy z typami danych daty i godziny w SQL Server. Zrozumiemy podstawy typu danych typu data-godzina, a także zobaczymy różne przykłady wykonywania zapytań w pola daty i godziny za pomocą wbudowanych funkcji SQL Server do manipulowania danymi, przekształcania wartości daty i godziny aw kilku przypadkach wykonaj operacje arytmetyczne.

Najpierw przyjrzyjmy się niektórym popularnym funkcjom daty i czasu w SQL.

Domyślnie SQL Server z natury obsługuje języki obsługiwane przez system operacyjny Windows. W zależności od ustawień regionalnych i ustawień sortowania podczas instalacji programu SQL Server, format daty SQL może się różnić. Rodzaj danych, które będziesz odtwarzać, jest określany na podstawie ustawień regionalnych i ustawień sortowania w SQL Server.

W SQL Server typ danych DATE ma dwa domyślne formaty języka neutralnego

  1. „RRRRMMDD”

    Poniższy przykład, HumanResource W tabeli. Pracownik zostaje zapytany o format daty SQL wartości HireDate

    1
    2
    3
    4
    5
    6

    UŻYJ AdventureWorks2014;
    GO
    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee;
    Idź

    Zapytaj kolumna HireDate przy użyciu neutralnego formatu języka. W zapytaniu przekazujemy wartość całkowitą, która składa się z roku 2008; miesiąc, 12 i 7 dzień.

    1
    2
    3

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE HireDate = „20081207”;

    Uwaga: Zasadniczo oznacza to, że wartość wejściowa jest numeryczna; silnik SQL wewnętrznie konwertuje go i tak naprawdę kończy z wartością znakową. Jest więc ujęty w pojedyncze cudzysłowy

  2. „MM-DD-RRRR” (format oparty na USA)

    W tym formacie daty SQL Kolumna HireDate zawiera wartości „MM-DD-RRRR”. To nie jest format całkowity. Przeprowadźmy to samo zapytanie z nowym formatem daty SQL z wartością wejściową „12 -07-2008” w kolumnie HireDate. Uruchommy więc następujące zapytanie i zweryfikujmy wynik. Wynik to ten sam zestaw pięciu rekordów.

    1
    2
    3
    4

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE HireDate = „12-07-2008”;
    Idź

    Uwaga: Wartości formatu neutralnego języka są niejawne i SQL Server dokona niezbędnej konwersji. Każdy inny format daty SQL wymaga odpowiedniej konwersji operandów i / lub wartości.

Poniższe przykłady wyświetlają komunikat o błędzie wynikający z niewłaściwego użycia formatu daty SQL.

1
2
3

SELECT HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = „25-12-2008 „;

Teraz operand i jego wartości są konwertowane do standardowego formatu 103. Więcej informacji o funkcjach CAST i Convert można znaleźć tutaj.Poniższy przykład zwraca wszystkie wiersze pracownika, w których HireDate „25-12-2008”

A teraz zacznijmy przyglądać się niektórym funkcjom dat, które SQL Server udostępnia nam, a te funkcje dat pozwalają nam pracować z różnymi częściami dat, a nawet manipulować niektórymi funkcjami, z którymi możemy pracować w zakresie dat.

Spójrzmy na funkcję DATEPART SQL. Ta funkcja zwraca wartość całkowitą z określonej kolumny daty

Zapytanie do kolumny HireDate, aby zwrócić tylko część roku z daty

Poniższy przykład generuje kolumnę wyjściową w postaci liczby całkowitej o nazwie, a to powinien zwracać tylko wartości roku

1
2
3

WYBIERZ DATEPART (YEAR, HireDate) AS
FROM HumanResources.Employee;
GO

Zapytanie o datę zatrudnienia kolumna, aby zwrócić tylko część miesiąca z daty

Poniższy przykład generuje kolumnę wyjściową zawierającą liczbę całkowitą o nazwie, która powinna zwrócić tylko wartości miesiąca.

1
2

WYBIERZ DATEPART (MIESIĄC, HireDate) AS
Z Zasobów Ludzkich. Pracownik;

Zapytaj w kolumnie HireDate, aby zwrócić tylko część kwartału data

Poniższy przykład generuje kolumnę wyjściową w postaci liczby całkowitej o nazwie, która powinna zwrócić tylko wartości miesiąca

1
2
3
SELECT DATEPART (QUARTER, HireDate) AS
FROM HumanResources.Employee;
GO

Poniższy przykład zwraca szczegóły sprzedaży z określonego dnia w polu OrderDate. Przykład pokazuje również użycie funkcji DATEPART SQL i kilku powiązanych z nią argumentów.

Instrukcja SELECT wybiera DATEPART, która jest nazwą funkcji, i przyjmuje dwa argumenty w nawiasach. Najpierw argument datepart, a po drugie wyrażenie date.

Przyjrzyjmy się używaniu funkcji SQL DATENAME. Jest to podobne do funkcji DATEPART SQL, ale zwraca ciąg znaków z określonego pola daty.

Następnie przyjrzyjmy się deterministycznym funkcjom, które zwracają części daty i godziny jako wartości całkowite. Poniższy przykład zwraca wartości całkowite z pola OrderDate dla odpowiednich funkcji YEAR i MONTH.

Wynik to zagregowana wartość TotalSales oparta na sprzedaży miesięcznej.

Teraz weźmy spójrz na kilka innych różnych funkcji. A ten, któremu przyjrzymy się, nazywa się DATEDIFF. Funkcja SQL DATEDIFF zwraca wartość całkowitą ze znakiem, która pozwala nam określić czas, który upłynął między dwiema datami.

Pobawmy się z zapytaniem, aby użyć różnych części daty, aby zobaczyć wyniki.

Poniższy przykład zwraca części czasu między dwoma polami daty i godziny. W tym przykładzie godziny, minuty i sekundy między wartościami DateTime są obliczane przy użyciu funkcji SQL DATEDIFF

Jak aby użyć funkcji SQL DATEDIFF w klauzuli where

Poniższy przykład zwraca wszystkich pracowników, którzy pracują w organizacji od ponad 10 lat. Logika warunkowa w kolumnie HireDate jest porównywana z okresem dłuższym niż 120 miesięcy, o którym mowa w klauzuli Where.

1
2
3
4

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

Jak używać funkcji DateDiff SQL z funkcją agregującą

Poniższy przykład zwraca liczbę lat między pierwszą datą wynajmu i data ostatniego wynajmu. W tym przypadku szukamy minimalnej funkcji HireDate i maksymalnej agregującej funkcji HireDate używanych jako parametry wejściowe funkcji SQL DATEDIFF.Dzięki tym wartościom można było łatwo znaleźć liczbę lat, które istniały między pierwszym a ostatnim zatrudnieniem.

1
2

SELECT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
Z Zasobów Ludzkich. Pracownik;

Przyjrzyjmy się funkcji DATEADD SQL. Funkcje dodają lub odejmują wartość do określonej części daty i zwracają zmodyfikowaną wartość części daty.

Spójrzmy na poniższy przykład. Wartość 1 jest dodawana do różnych części daty, a wartość -1 jest dodawana do części godziny datapart, a -30 jest dodawana do części daty minuty.

W wyniku widać, że wartość jest operowana na GETDATE () zgodnie ze zdefiniowaną częścią daty.

Uwaga: Funkcje SQL DATEADD i DATEDIFF mogą być używane w SELECT, WHERE, HAVING, GROUP BY i ORDER BY.

Datadiff vs Datediff_BIG

Na razie to wszystko w tym artykule o formacie daty SQL…

Podsumowanie

Do tej pory widzieliśmy bardzo ważne funkcje formatu daty SQL, takie jak DATEPART, DATENAME, YEAR, MONTH i DAY, ze szczególnym uwzględnieniem funkcji SQL DATEADD i funkcji SQL DATEDIFF. Funkcje formatu daty SQL w serwerze SQL są naprawdę potężne i naprawdę pomagają w dostarczaniu skutecznej analizy danych i raportów. W niektórych przypadkach jest to kwestia dostosowania ustawień sortowania, ustawień lokalizacji, po prostu ponownego dostosowania strumienia wejściowego wartości tekstowej lub korekty dokonanej w źródle danych wystarczyłyby do problemu z datą i godziną.

Zalecane jest użycie formatu języka neutralnego, ponieważ w większości przypadków działa lepiej. Wreszcie widzimy różnicę między funkcją SQL DATEDIFF a funkcją SQL DATEDIFF_BIG. Mam nadzieję, że podoba Ci się ten artykuł. Jeśli masz jakieś pytania, zapraszam do komentowania poniżej

  • Autor
  • Najnowsze posty
Jestem technologiem baz danych i mam ponad 11 lat bogatego, praktycznego doświadczenia w technologiach baz danych. Posiadam certyfikat Microsoft Certified Professional i tytuł magistra aplikacji komputerowych.
Moją specjalnością jest projektowanie & wdrażania rozwiązań wysokiej dostępności i międzyplatformowej migracji bazy danych. Obecnie pracujemy nad technologiami SQL Server, PowerShell, Oracle i MongoDB.
Wyświetl wszystkie posty Prashantha Jayarama

Najnowsze posty Prashantha Jayarama (zobacz wszystkie)
  • Krótkie omówienie audytu bazy danych w SQL – 28 stycznia 2021
  • Jak skonfigurować usługę Azure Data Sync między bazami danych Azure SQL a lokalnym programem SQL Server – 20 stycznia 2021 r.
  • Jak wykonywać operacje importu / eksportu bazy danych Azure SQL za pomocą programu PowerShell – 14 stycznia , 2021 r.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *