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
-
„RRRRMMDD”
Poniższy przykład, HumanResource W tabeli. Pracownik zostaje zapytany o format daty SQL wartości HireDate
123456UŻYJ AdventureWorks2014;GOSELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM 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ń.
123SELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE 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
-
„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.
1234SELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE 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
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
- 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.