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 | +---------------------+------------+