Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Convertir 'datetime' en 'date' dans SQL Server (exemples T-SQL)

Cet article contient des exemples de conversion d'un datetime valeur à une date valeur dans SQL Server.

La conséquence évidente de la conversion d'un datetime valeur à date c'est que vous perdez la partie temps. Cependant, l'un des avantages est que vous réduisez la taille de stockage de 8 octets à 3 octets. Quoi qu'il en soit, vous ne feriez cette conversion que si vous n'avez pas besoin de la partie temporelle.

La dateheure Le type de données comprend la date et l'heure, avec une fraction de seconde à 3 chiffres. Sa précision est arrondie à des incréments de .000, .003 ou .007 secondes.

Cependant, la date le type de données a une précision de 1 jour (et il n'inclut pas l'heure, comme mentionné).

Exemple 1 – Conversion implicite

Voici un exemple de conversion implicite entre datetime et date .

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

Résultat :

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Il s'agit d'une conversion implicite car nous n'utilisons pas de fonction de conversion (comme celles ci-dessous) pour la convertir explicitement. Dans ce cas, SQL Server effectue une conversion implicite dans les coulisses lorsque nous essayons d'attribuer le datetime valeur à une date variables.

Dans cet exemple, nous pouvons voir que la date La valeur inclut uniquement la date (sans le composant d'heure).

Exemple 2 - Conversion explicite à l'aide de CAST()

Voici un exemple de conversion explicite. Dans ce cas, j'utilise le CAST() fonction directement dans le SELECT déclaration pour convertir explicitement entre datetime et date .

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

Résultat :

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Exemple 3 - Conversion explicite à l'aide de CONVERT()

Voici un exemple de conversion explicite utilisant le CONVERT() fonction au lieu de CAST() .

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

Résultat :

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+