smalldatetime (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Nota

Use los tipos de datos time, date, datetime2 y datetimeoffset para nuevos trabajos. Estos tipos se alinean con el estándar SQL. 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
Sintaxis smalldatetime
Uso DECLARE @MySmalldatetime smalldatetime

CREATE TABLE Table1 ( Column1 smalldatetime )
Formatos de literal de cadena predeterminados

(se usa para el cliente de nivel inferior)
No aplicable
Intervalo de fechas De 1900-01-01 a 2079-06-06

Del 1 de enero de 1900 hasta el 6 de junio de 2079
Intervalo de horas De 00:00:00 a 23:59:59

2007-05-09 23:59:59 se redondeará a

2007-05-10 00:00:00
Intervalos de elementos AAAA es una cifra de cuatro dígitos comprendida entre 1900 y 2079 que representa un año.

MM es una cifra de dos dígitos, comprendida entre 01 y 12, que representa un mes del año especificado.

DD es una cifra de dos dígitos, comprendida entre 01 y 31 dependiendo del mes, que representa un día del mes especificado.

hh es una cifra de dos dígitos comprendida entre 00 y 23 que representa la hora.

mm es una cifra de dos dígitos comprendida entre 00 y 59 que representa los minutos.

s es una cifra de dos dígitos comprendida entre 00 y 59 que representa los segundos. 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.
Longitud en caracteres 19 posiciones como máximo
Tamaño de almacenamiento 4 bytes, fijo.
Precisión Un minuto
Valor predeterminado 1900-01-01 00:00:00
Calendario Gregoriano

(No incluye el intervalo completo de años).
Precisión de fracciones de segundo definida por el usuario No
Conservación y reconocimiento del ajuste de zona horaria No
Reconocimiento del horario de verano No

Compatibilidad con ANSI e ISO 8601

smalldatetime no es compatible con ANSI o ISO 8601.

Convertir 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 más información sobre cómo usar las funciones CAST y CONVERT con datos de fecha y hora, vea CAST y CONVERT (Transact-SQL).

Convertir tipos smalldatetime a 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 smalldatetime en un valor date.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';  
DECLARE @date date = @smalldatetime  
  
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';  
  
--Result  
--@smalldatetime          date  
------------------------- ----------  
--1955-12-13 12:43:00     1955-12-13  
--  
--(1 row(s) affected)  

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

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';  
DECLARE @time time(4) = @smalldatetime;  
  
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';  
  
--Result  
--@smalldatetime          time  
------------------------- -------------  
--1955-12-13 12:43:00     12:43:00.0000  
--  
--(1 row(s) affected)  

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

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';  
DECLARE @datetime datetime = @smalldatetime;  
  
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';  
  
--Result  
--@smalldatetime          datetime  
------------------------- -----------------------  
--1955-12-13 12:43:00     1955-12-13 12:43:00.000  
--  
--(1 row(s) affected)  

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

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';  
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;  
  
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';  
  
--Result  
--@smalldatetime          datetimeoffset(4)  
------------------------- ------------------------------  
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0  
--  
--(1 row(s) affected)  

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

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';  
DECLARE @datetime2 datetime2(4) = @smalldatetime;  
  
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';  
  
--Result  
--@smalldatetime           datetime2(4)  
------------------------- ------------------------  
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000  
--  
--(1 row(s) affected)  

Ejemplos

A. Convertir literales de cadena con segundos a smalldatetime

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

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

B. Comparar tipos de datos de fecha y hora

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

SELECT   
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'   
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'   
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS   
        'smalldatetime'   
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'   
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS   
        'datetime2'  
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS   
        'datetimeoffset';  
Tipo de datos Output
time 12:35:29. 1234567
date 2007-05-08
smalldatetime 2007-05-08 12:35:00
datetime 2007-05-08 12:35:29.123
datetime2 2007-05-08 12:35:29. 1234567
datetimeoffset 2007-05-08 12:35:29.1234567 +12:15

Consulte también

CAST y CONVERT (Transact-SQL)