Jak sformatować datę i godzinę na serwerze SQL

Jak sformatować datę i godzinę na serwerze SQL
Manipulowanie wartościami daty i godziny za pomocą typów danych DATETIME, DATE i czasu jest jednym z najważniejszych funkcji SQL, ponieważ te typy danych są specjalnie zaprojektowane do przechowywania takich wartości. Często są one wykorzystywane w aplikacjach wymagających obliczeń i manipulacji datami i godziny. W tym artykule zagłębimy się w te typy danych.

Podstawowe typy danych daty w SQL

  • DATA: Ten typ danych służy do przechowywania wartości daty w formacie Yyyy-MM-DD. Jest w stanie reprezentować daty w przedziale od 1 000 stycznia do 31 grudnia 9999. Wartości daty są przechowywane w kompaktowym formacie przy użyciu tylko trzech bajtów.
  • CZAS: Typ danych czasowych jest wykorzystywany do przechowywania wartości czasowych w formacie HH: MI: SS. Jest w stanie reprezentować wartości czasowe w zakresie 00:00:00 do 23:59:59.
  • Datetime: Typ danych DATETIME jest w stanie przechowywać wartości daty i godziny w formacie Yyyy-MM-DD HH: MI: SS. Umożliwia wartości w zakresie 1 stycznia 1753, 00:00:00 do 31 grudnia 9999, 23:59:59 na przechowywanie. Ten typ danych jest przydatny do przechowywania znaczników czasu, takich jak czas transakcji lub czas zdarzenia.
  • SmallDateTime: Ten typ danych jest taki sam jak typ danych DATETIME, ale z pewną mniejszą różnicą. Przechowuje zarówno wartości daty, jak i czas, ale z mniejszym zakresem wartości od 1 stycznia 1900 r., 00:00:00 do 6 czerwca 2079, 23:59:59. Wartości są również zaokrąglone do najbliższej minuty, co oszczędza przestrzeń i skraca czas przetwarzania. Ten typ danych jest przydatny do przechowywania informacji wrażliwych na czas, które nie wymagają wysokiej precyzji. Wymaga tylko 4 bajtów danych. Jest przechowywany w formacie Yyyy-MM-DD HH: MM: SS.
  • DateTime2: Ten typ danych jest podobny do typu danych DATETIME, ale z wyższą precyzją i większym zakresem. Zakres wartości jest taki sam jak dataTime, ale może przechowywać ułamkowe sekundy do 7 cyfr.

Jak są przechowywane na serwerze SQL?

W serwerze SQL daty są przechowywane za pomocą dwóch 4-bajtowych liczb całkowitych. Początkowa liczba całkowita odpowiada liczbie dni poprzedzających lub następującej w dniu podstawowym 1 stycznia 1900 r. Druga liczba całkowita odpowiada liczbie 1/300. sekundy, która upłynęła od północy. Na przykład data „1 stycznia 2000 12:00:00” jest przechowywana jako dwa liczby całkowite - 36 529 (liczba dni między 1 stycznia 1900 r. A 1 stycznia 2000 r.) I 43 200 000 (liczba 1/300th sekundy od północy).

Serwer SQL zapewnia również szereg wbudowanych funkcji do pracy z datami, takimi jak DateAdd, Datediff i Convert, które pozwalają nam wykonywać wspólne operacje, takie jak dodawanie lub odejmowanie przedziałów czasowych, porównywanie dat i formatowanie Daktyle.

Aby wykonać zapytania SQL w bazie danych, zwykle używamy narzędzia takiego jak SQL Server Management Studio (SSMS).

Tworzenie [dbo].[Zamówienia] Tabela

Aby utworzyć tabelę w naszej bazie danych, musimy napisać następujące zapytania:

Utwórz tabelę [DBO].[ZAMÓWIENIA] (
[ord_number] int not null
,[ord_dateTime] datetime null
,[ord_date] data null
,[Deli_DateTime] DateTime null
,[last_visit_date] data null
)

Wstawienie danych do [DBO].[Zamówienia] Tabela

Włóż wartości w tabeli za pomocą następującego polecenia:

Wstaw do [dbo].[Zamówienia] ([ord_number], [ord_dateTime], [ord_date], [deli_dateTime], [last_visit_date]))))))
Wartości
(„1”, „2021-10-01 10:30:00”, „2021-10-01”, „2021-10-12 10:11:10”, „2021-11-01”),
(„2”, „2021-10-01 12:45:00”, „2021-10-01”, „2021-10-10 14:10:11”, „2021-10-15”),
(„3”, „2021-10-30 13:25:00”, „2021-10-30”, „2021-11-05 13:22:12”, „2021-12-30”),
(„4”, „2021-09-22 16:30:00”, „2021-09-22”, „2021-09-25 14:12:13”, „2021-12-22”),
(„5”, „2021-01-10 18:15:00”, „2021-01-10”, „2021-02-01 11:15:14”, „2022-01-10”),
(„6”, current_timestamp, Convert (data, current_timestamp), dataadd (dzień, 5, current_timestamp), dataadd (miesiąc, 5, current_timestamp)))

Przekształcenie daty do ciągu

Jeśli przywrócimy wartości datetime z tabeli, wyniki będą wyświetlane jako „2021-10-01 10:30:00.000 ”. Ale jeśli lubimy przekonwertować go na ciąg w naszym własnym formacie w kodzie SQL, możemy to zrobić za pomocą następującej funkcji:

WYBIERAĆ
[ord_dateTime]
,Konwertuj (varchar (20), [ord_dateTime], 22) „order_date_string”
Z
[dbo].[ZAMÓWIENIA]

Wyjście:

ord_dateTime Order_Date_String
2021-10-01 10:30:00.000 10/01/21 10:30:00
2021-10-01 12:45:00.000 10/01/21 12:45:00
2021-10-30 13:25:00.000 10/30/21 13:25:00

Znalezienie konkretnej daty za pomocą klauzuli Where

Aby znaleźć zamówienia, w których data zamówienia wynosi 1 grudnia 2021 r., Musimy śledzić następujące zapytanie:

WYBIERAĆ
[ord_number]
,[ord_date]
Z
[dbo].[ZAMÓWIENIA]
GDZIE
[ord_date] = '01/10/2021 '

Wyjście:

ord_number ord_date
5 2021-01-10
5 2021-01-10

Oddzielenie daty od czasu

Możemy również użyć funkcji konwertowania w dniu, aby odzyskać tylko wartość daty, określając styl. W tym celu używamy następującego zapytania:

Deklaruj @DD jako datetime
Set @dd = '2011-07-03 20:30:40'
Wybierz Konwertuj (varchar, @dd, 103)

Wyjście:

(Brak nazwy kolumny)
1 03/07/2011

Uzyskanie bieżącej daty i godziny

Oto przykład zapytania SQL, które pobiera bieżącą datę i godzinę za pomocą funkcji GetDate i Current_timestamp:

WYBIERAĆ
GetDate ()
,Current_timestamp

Wyjście:

(Bez nazwy kolumny) (bez nazwy kolumny)
1 2023-03-04 23:44:02.883 2023-03-04 23:44:02.883

Znalezienie różnicy między dwiema datami

Często pomocne jest znalezienie różnicy między dwiema datami. Dzięki temu możemy robić takie rzeczy, jak znaleźć liczbę dni między zamówieniem a datą dostawy.

Oto przykład:

WYBIERAĆ
[ord_date]
,[Deli_DateTime]
,Datediff (dzień, [ord_date], [deli_dateTime]) „del_days”
Z
[dbo].[ZAMÓWIENIA]

Wyjście:

ord_date deli_dateTime Del_Days
1 2021-10-01 2021-10-12 10:11:10.000 11
2 2021-10-01 2021-10-10 14:10:11.000 9
3 2021-10-30 2021-11-05 13:22:12.000 6

Wniosek

Nauczyliśmy się, jak manipulować datami, czasami i strunami za pomocą wbudowanych funkcji. Funkcje te są bardzo przydatne do wykonywania obliczeń i transformacji danych przechowywanych w tabelach SQL Server. Dzięki zrozumieniu i efektywnym wykorzystaniu tych typów danych i funkcji możemy pisać bardziej wydajne i potężne zapytań SQL.