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

Przykłady konwersji „data” na „datetime” w SQL Server (T-SQL)

Ten artykuł zawiera przykłady konwersji daty wartość na data i godzina wartość w SQL Server.

Po przekonwertowaniu daty wartość do data i godzina , dodatkowe informacje są dodawane do wartości. Dzieje się tak, ponieważ data i godzina typ danych zawiera zarówno informacje o dacie, jak i godzinie. data z drugiej strony typ danych zawiera tylko informacje o dacie.

Przykład 1 – Konwersja niejawna

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

DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SELECT 
  @thedate AS 'date',
  @thedatetime AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

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ć datę wartość na data i godzina zmienna.

Widzimy, że data zmienna zawiera tylko informacje o dacie, natomiast data-godzina zmienna zawiera zarówno informacje o dacie, jak i godzinie.

Podczas konwersji między datą i data i godzina , składnik czasu jest ustawiony na 00:00:00.000 . Dzieje się tak, ponieważ wartość daty nie zawiera żadnych informacji o czasie, więc nie ma możliwości, aby SQL Server wiedział, która godzina jest potrzebna (jeśli w ogóle).

Przykład 2 – Modyfikacja czasu

Jeśli chcesz zmienić godzinę (ale zachować tę samą datę), możesz użyć DATEADD() funkcja właśnie to zrobić.

DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SET @thedatetime = DATEADD(hour, 8, @thedatetime)
SELECT 
  @thedate AS 'date',
  @thedatetime AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

Przykład 3 – 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 datą i data i godzina .

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  CAST(@thedate AS datetime) AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

Więc otrzymujemy ten sam wynik, co niejawna konwersja.

Możemy również dostosować czas w ten sposób:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

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

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

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  CONVERT(datetime, @thedate) AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

I dostosowanie czasu:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';

Wynik:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

  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 mogę ogólnie posortować kolumnę „Numer wersji” za pomocą zapytania SQL Server?

  2. Wdrażanie obciążenia przyrostowego za pomocą przechwytywania zmian danych w SQL Server

  3. Projekt bazy danych dla ustawień użytkownika

  4. Co jest szybsze COALESCE CZY ISNULL?

  5. SQL Server LIKE zawierający znaki nawiasu kwadratowego