smalldatetime (Transact-SQL)smalldatetime (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Define una fecha que se combina con una hora del día.Defines a date that is combined with a time of day. La hora está en un formato de día de 24 horas , con segundos siempre a cero (: 00) y sin fracciones de segundo.The time is based on a 24-hour day, with seconds always zero (:00) and without fractional seconds.

Nota

Use los tipos de datos time, date, datetime2 y datetimeoffset para nuevos trabajos.Use the time, date, datetime2 and datetimeoffset data types for new work. Estos tipos se alinean con el estándar SQL.These types align with the SQL Standard. Son más portátiles.They are more portable. time, datetime2 y datetimeoffset proporcionan una mayor precisión de segundos.time, datetime2 and datetimeoffset provide more seconds precision. datetimeoffset proporciona compatibilidad de zona horaria para las aplicaciones implementadas globalmente.datetimeoffset provides time zone support for globally deployed applications.

Descripción de smalldatetimesmalldatetime description

SintaxisSyntax smalldatetimesmalldatetime
UsoUsage DECLARE @MySmalldatetime smalldatetimeDECLARE @MySmalldatetime smalldatetime

CREATE TABLE Table1 ( Column1 smalldatetime )CREATE TABLE Table1 ( Column1 smalldatetime )
Formatos de literal de cadena predeterminadosDefault string literal formats

(se usa para el cliente de nivel inferior)(used for down-level client)
No aplicableNot applicable
Intervalo de fechasDate range De 1900-01-01 a 2079-06-061900-01-01 through 2079-06-06

Del 1 de enero de 1900 hasta el 6 de junio de 2079January 1, 1900, through June 6, 2079
Intervalo de horasTime range De 00:00:00 a 23:59:5900:00:00 through 23:59:59

2007-05-09 23:59:59 se redondeará a2007-05-09 23:59:59 will round to

2007-05-10 00:00:002007-05-10 00:00:00
Intervalos de elementosElement ranges AAAA es una cifra de cuatro dígitos comprendida entre 1900 y 2079 que representa un año.YYYY is four digits, ranging from 1900, to 2079, that represent a year.

MM es una cifra de dos dígitos, comprendida entre 01 y 12, que representa un mes del año especificado.MM is two digits, ranging from 01 to 12, that represent a month in the specified year.

DD es una cifra de dos dígitos, comprendida entre 01 y 31 dependiendo del mes, que representa un día del mes especificado.DD is two digits, ranging from 01 to 31 depending on the month, that represent a day of the specified month.

hh es una cifra de dos dígitos comprendida entre 00 y 23 que representa la hora.hh is two digits, ranging from 00 to 23, that represent the hour.

mm es una cifra de dos dígitos comprendida entre 00 y 59 que representa los minutos.mm is two digits, ranging from 00 to 59, that represent the minute.

s es una cifra de dos dígitos comprendida entre 00 y 59 que representa los segundos.ss is two digits, ranging from 00 to 59, that represent the second. Los valores que son 29.998 segundos o menos se redondean al minuto más cercano.Values that are 29.998 seconds or less are rounded down to the nearest minute. Los valores de 29.999 segundos o más se redondean al minuto más cercano.Values of 29.999 seconds or more are rounded up to the nearest minute.
Longitud en caracteresCharacter length 19 posiciones como máximo19 positions maximum
Tamaño de almacenamientoStorage size 4 bytes, fijo.4 bytes, fixed.
PrecisiónAccuracy Un minutoOne minute
Valor predeterminadoDefault value 1900-01-01 00:00:001900-01-01 00:00:00
CalendarioCalendar GregorianoGregorian

(No incluye el intervalo completo de años).(Doesn't include the complete range of years.)
Precisión de fracciones de segundo definida por el usuarioUser-defined fractional second precision NoNo
Conservación y reconocimiento del ajuste de zona horariaTime zone offset aware and preservation NoNo
Reconocimiento del horario de veranoDaylight saving aware NoNo

Compatibilidad con ANSI e ISO 8601ANSI and ISO 8601 Compliance

smalldatetime no es compatible con ANSI o ISO 8601.smalldatetime isn't ANSI or ISO 8601 compliant.

Convertir datos de fecha y horaConverting date and time data

Cuando se convierte a los tipos de datos de fecha y hora, SQL ServerSQL Server rechaza todos los valores que no reconoce como fechas u horas.When you convert to date and time data types, SQL ServerSQL Server rejects all values it can't recognize as dates or times. 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).For information about using the CAST and CONVERT functions with date and time data, see CAST and CONVERT (Transact-SQL).

Convertir tipos smalldatetime a otros tipos de fecha y horaConverting smalldatetime to other date and time types

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.This section describes what occurs when a smalldatetime data type is converted to other date and time data types.

Cuando la conversión es a date, se copian los valores de año, mes y día.For a conversion to date, the year, month, and day are copied. En el código siguiente se muestran los resultados de convertir un valor smalldatetime en un valor date.The following code shows the results of converting a smalldatetime value to a date value.

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.When the conversion is to time(n), the hours, minutes, and seconds are copied. Las fracciones de segundo se establecen en 0.The fractional seconds are set to 0. En el código siguiente se muestran los resultados de convertir un valor smalldatetime en un valor time(4).The following code shows the results of converting a smalldatetime value to a time(4) value.

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.When the conversion is to datetime, the smalldatetime value is copied to the datetime value. Las fracciones de segundo se establecen en 0.The fractional seconds are set to 0. En el código siguiente se muestran los resultados de convertir un valor smalldatetime en un valor datetime.The following code shows the results of converting a smalldatetime value to a datetime value.

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).For a conversion to datetimeoffset(n), the smalldatetime value is copied to the datetimeoffset(n) value. Las fracciones de segundo se establecen en 0 y el ajuste de zona horaria se establece en +00: 0.The fractional seconds are set to 0, and the time zone offset is set to +00:0. En el código siguiente se muestran los resultados de convertir un valor smalldatetime en un valor datetimeoffset(4).The following code shows the results of converting a smalldatetime value to a datetimeoffset(4) value.

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).For the conversion to datetime2(n), the smalldatetime value is copied to the datetime2(n) value. Las fracciones de segundo se establecen en 0.The fractional seconds are set to 0. En el código siguiente se muestran los resultados de convertir un valor smalldatetime en un valor datetime2(4).The following code shows the results of converting a smalldatetime value to a datetime2(4) value.

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)  

EjemplosExamples

A.A. Convertir literales de cadena con segundos a smalldatetimeCasting string literals with seconds to smalldatetime

En el ejemplo siguiente se compara la conversión de los segundos presentes en los literales de cadena a smalldatetime.The following example compares the conversion of seconds in string literals to 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);  
EntradaInput SalidaOutput
2007-05-08 12:35:292007-05-08 12:35:29 2007-05-08 12:35:002007-05-08 12:35:00
2007-05-08 12:35:302007-05-08 12:35:30 2007-05-08 12:36:002007-05-08 12:36:00
2007-05-08 12:59:59,9982007-05-08 12:59:59.998 2007-05-08 13:00:002007-05-08 13:00:00

b.B. Comparar tipos de datos de fecha y horaComparing date and time data types

En el ejemplo siguiente se comparan los resultados de convertir una cadena a cada tipo de datos de fecha y hora.The following example compares the results of casting a string to each date and time data type.

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 datosData type SalidaOutput
timetime 12:35:29.12:35:29. 12345671234567
datedate 2007-05-082007-05-08
smalldatetimesmalldatetime 2007-05-08 12:35:002007-05-08 12:35:00
datetimedatetime 2007-05-08 12:35:29.1232007-05-08 12:35:29.123
datetime2datetime2 2007-05-08 12:35:29.2007-05-08 12:35:29. 12345671234567
datetimeoffsetdatetimeoffset 2007-05-08 12:35:29.1234567 +12:152007-05-08 12:35:29.1234567 +12:15

Vea tambiénSee also

CAST y CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)