Compartir vía


smalldatetime (Transact-SQL)

se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database en Microsoft Fabric

Define una fecha que se combina con una hora del día. La hora se basa en un día de 24 horas, con segundos siempre cero (:00) y sin fracciones de segundos.

Nota

Use elde hora , fecha, datetime2y tipos de datos datetimeoffset para el nuevo trabajo. Estos tipos se alinean con el estándar sql, ya que son más portátiles. time, datetime2 y datetimeoffset proporcionan una mayor precisión de segundos. datetimeoffset proporciona compatibilidad de zona horaria para las aplicaciones implementadas globalmente.

Descripción de smalldatetime

Propiedad Value
de sintaxis de smalldatetime
uso DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
formatos literales de cadena predeterminados
(se usa para el cliente de nivel inferior)
No aplicable
intervalo de fechas 1900-01-01 a través de 2079-06-06

Del 1 de enero de 1900 hasta el 6 de junio de 2079
intervalo de tiempo 00:00:00 a través de 23:59:59

2024-05-09 23:59:59 redondea a 2024-05-10 00:00:00
intervalos de elementos yyyy es de cuatro dígitos, que van de 1900 a 2079, que representa un año.

MM es de dos dígitos, comprendido entre 01 y 12, que representa un mes en el año especificado.

dd es de dos dígitos, que van de 01 a 31 dependiendo del mes, que representa un día del mes especificado.

HH es de dos dígitos, entre 00 y 23, que representa la hora.

mm es de dos dígitos, entre 00 y 59, que representa el minuto.

ss es de dos dígitos, que van de 00 a 59, que representa el segundo. Los valores que son 29.998 segundos o menos se redondean al minuto más cercano. Los valores de 29.999 segundos o más se redondean al minuto más cercano.
de longitud de caracteres 19 posiciones como máximo
tamaño de almacenamiento 4 bytes, fijo
de precisión Un minuto
valor predeterminado 1900-01-01 00:00:00
calendario Gregoriano

(No incluye el intervalo completo de años).
de precisión de segundo fracciones definidas por el usuario No
de conservación y reconocimiento de la zona horaria No
de verano No

Cumplimiento de ANSI e ISO 8601

smalldatetime no es compatible con ANSI o ISO 8601.

Conversión de datos de fecha y hora

Cuando se convierte a los tipos de datos de fecha y hora, SQL Server rechaza todos los valores que no reconoce como fechas u horas. Para obtener información sobre el uso de las funciones de CAST y CONVERT con datos de fecha y hora, consulte CAST y CONVERT.

Convertir smalldatetime en otros tipos de fecha y hora

En esta tabla se describe lo que ocurre cuando un tipo de datos smalldatetime se convierte a otros tipos de datos de fecha y hora.

Cuando la conversión es a date, se copian los valores de año, mes y día. En el código siguiente se muestran los resultados de convertir un valor de smalldatetime en un valor de fecha .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Este es el conjunto de resultados.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

Cuando la conversión es a time(n), se copian las horas, minutos y segundos. Las fracciones de segundos se establecen en 0. En el código siguiente se muestran los resultados de convertir un valor de smalldatetime en un valor de time(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Este es el conjunto de resultados.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

Cuando la conversión es a datetime, el valor de smalldatetime se copia en el valor de datetime. Las fracciones de segundos se establecen en 0. En el código siguiente se muestran los resultados de convertir un valor de smalldatetime en un valor de fecha y hora .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Este es el conjunto de resultados.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

Para una conversión a datetimeoffset(n), el valor smalldatetime se copia en el datetimeoffset(n) valor. Las fracciones de segundos se establecen en 0y el desplazamiento de zona horaria se establece en +00:0. En el código siguiente se muestran los resultados de convertir un valor de smalldatetime en un valor de datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Este es el conjunto de resultados.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

Cuando la conversión es a datetime2(n) , el valor de smalldatetime se copia en el valor de datetime2(n) . Las fracciones de segundos se establecen en 0. En el código siguiente se muestran los resultados de convertir un valor de smalldatetime en un valor de datetime2(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Este es el conjunto de resultados.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Ejemplos

A. Convertir literales de cadena con segundos a smalldatetime

En el ejemplo siguiente se compara la conversión de segundos en literales de cadena con smalldatetime.

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Entrada Salida
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. Comparación de tipos de datos de fecha y hora

En el siguiente ejemplo se comparan los resultados de convertir una cadena a cada tipo de datos date y time.

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Tipo de datos Salida
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15