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

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

Ten artykuł zawiera przykłady konwersji daty/godziny wartość do smalldatetime wartość w SQL Server.

Jedna z zalet konwersji daty/godziny wartość smalldatetime polega na zmniejszeniu rozmiaru pamięci z 8 bajtów do 4 bajtów. Jednak tracisz przy tym precyzję.

data i godzina typ danych zawiera 3-cyfrową część ułamkową sekund. Jego dokładność jest zaokrąglana z dokładnością do 0,000, 0,003 lub 0,007 sekundy.

smalldatetime z drugiej strony typ danych nie ma żadnych ułamków sekund, a jego składnik sekund jest zawsze ustawiony na zero (:00). Ponadto ma dokładność tylko do najbliższej minuty.

Po przekonwertowaniu daty/godziny wartość smalldatetime , kopiowana jest data i część czasu. Składnik sekund jest ustawiony na zero (niezależnie od pierwotnej wartości), a czas jest zaokrąglany do najbliższej minuty. Wszelkie ułamki sekund są usuwane.

Przykład 1 – Konwersja niejawna

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

DECLARE 
  @thedatetime datetime, 
  @thesmalldatetime smalldatetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thesmalldatetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thesmalldatetime AS 'smalldatetime';

Wynik:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

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

W tym przykładzie widzimy, że smalldatetime wartość nie obejmuje ułamków sekund, sekundy zostały ustawione na zero, a minuty zostały zaokrąglone w górę.

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, aby jawnie przekonwertować między data godzina i smalldatetime .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS smalldatetime) AS 'smalldatetime';

Wynik:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

Być może zauważyłeś, że w tym przykładzie zmieniłem ułamki sekund podczas przypisywania wartości początkowej do @thedatetime . Ale ponieważ przypisuję go do daty i godziny typ danych, część ułamków sekund jest zaokrąglana w górę (ponieważ jej dokładność jest zaokrąglana z dokładnością do 0,000, 0,003 lub 0,007 sekundy). W tym przypadku próbuję przypisać ułamek sekundy z 125 ale jest zaokrąglana w górę do 127 .

Nie ma to jednak wpływu na smalldatetime wartość.

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

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

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(smalldatetime, @thedatetime) AS 'smalldatetime';

Wynik:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć prawdziwą relację jeden do jednego w SQL Server

  2. Zapytanie T-SQL, aby wyświetlić definicję tabeli?

  3. Konwertuj „datetime” na „smalldatetime” w SQL Server (przykłady T-SQL)

  4. Zmień separator na przecinek podczas wysyłania wyników zapytania pocztą e-mail w programie SQL Server (T-SQL)

  5. Projekt bazy danych:Obliczanie salda konta