Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwertuj „smalldatetime” na „date” w SQL Server (przykłady T-SQL)

Ten artykuł zawiera przykłady konwersji smalldatetime wartość na datę wartość w SQL Server.

Jedna z korzyści konwersji smalldatetime wartość do data polega na zmniejszeniu rozmiaru pamięci z 4 bajtów do 3 bajtów. Jednak tracisz składnik czasu z wartości, więc wykonasz tę konwersję tylko wtedy, gdy nie potrzebujesz czasu.

smalldatetime typ danych zarówno datę, jak i godzinę. Jego składnik sekund jest zawsze ustawiony na zero (:00) i nie ma żadnych ułamków sekund. Jego dokładność jest do najbliższej minuty. Jego rozmiar pamięci to 4 bajty.

data z drugiej strony typ danych zawiera tylko datę. Jego dokładność jest do najbliższego dnia. Jego rozmiar pamięci to 3 bajty.

Żeby było jasne, kiedy konwertujesz smalldatetime wartość do data kopiowane są rok, miesiąc i dzień. Czas nie jest kopiowany.

Przykład 1 – Konwersja niejawna

Oto przykład niejawnej konwersji między smalldatetime i data .

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedate date;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedate = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedate AS 'thedate';

Wynik:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

Jest to niejawna konwersja, ponieważ nie używamy funkcji konwersji (takich jak te poniżej) do jawnej konwersji. W takim przypadku SQL Server wykonuje niejawną konwersję za kulisami, gdy próbujemy przypisać smalldatetime wartość na datę zmienna.

W tym przykładzie widzimy, że część daty smalldatetime wartość jest kopiowana do daty wartość, a czas nie jest kopiowany.

Przykład 2 – Jawna konwersja za pomocą CAST()

Oto przykład jawnej konwersji. W tym przypadku używam CAST() działać bezpośrednio w SELECT oświadczenie o jawnej konwersji między smalldatetime i data .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS date) AS 'date';

Wynik:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

Przykład 3 – Jawna konwersja przy użyciu funkcji CONVERT()

Oto przykład jawnej konwersji przy użyciu CONVERT() funkcja zamiast CAST() .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Wynik:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. freeTDS nie używa swojej konfiguracji

  2. Jak określić całkowitą liczbę otwartych/aktywnych połączeń w serwerze ms sql 2005

  3. SQL Server SELECT do istniejącej tabeli

  4. Ile razy dany znak pojawia się w ciągu znaków

  5. Jak zmienić kolumnę z wartości Null na Not Null w tabeli SQL Server — samouczek SQL Server / T-SQL, część 52