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

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

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

L'un des avantages de la conversion d'un smalldatetime valeur à date est que vous réduisez la taille de stockage de 4 octets à 3 octets. Cependant, vous perdez la composante temporelle de la valeur, vous ne ferez donc cette conversion que si vous n'avez pas besoin de temps.

Le petitedateheure type de données à la fois la date et l'heure. Son composant de secondes est toujours défini sur zéro (:00) et il n'a pas de fraction de seconde. Sa précision est à la minute près. Sa taille de stockage est de 4 octets.

La date type de données, d'autre part, n'inclut que la date. Sa précision est au jour près. Sa taille de stockage est de 3 octets.

Donc, pour être clair, lorsque vous convertissez un smalldatetime valeur à date , l'année, le mois et le jour sont copiés. L'heure n'est pas copiée.

Exemple 1 – Conversion implicite

Voici un exemple de conversion implicite entre smalldatetime et date .

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

Résultat :

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 smalldatetime valeur à une date variables.

Dans cet exemple, nous pouvons voir que la partie date de smalldatetime la valeur est copiée à la date valeur, et que l'heure n'est pas copiée.

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 smalldatetime et date .

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

Résultat :

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Résultat :

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