smalldatetime (Transact-SQL)

  • 07/22/2017
  • 4 minutos para leer
    • M
    • j
    • c
    • M
    • m
    • +4

Se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

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

Nota

Utiliza 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 más precisión de segundos. datetimeoffset proporciona soporte de zona horaria para aplicaciones desplegadas globalmente.

descripción de smalldatetime

Propiedad Valor
Sintaxis smalldatetime
Usage DECLARE @MySmalldatetime smalldatetime
CREATE TABLE Table1 ( Column1 smalldatetime )
Formatos literales de cadena por defecto
(utilizados para el nivel inferior delnivel de cliente)
No aplicable
Rango de fechas 1900-01-01 hasta 2079-06-06
El 1 de enero, 1900, hasta el 6 de junio de 2079
Gama de tiempo 00:00:00 hasta 23:59:59
2007-05-09 23:59:59 redondeará a
2007-05-10 00:00:00
Rangos de elementos YYY es cuatro dígitos, que van desde 1900, hasta 2079, que representan un año.
MM son dos dígitos, que van del 01 al 12, que representan un mes del año especificado.
DD son dos dígitos, que van del 01 al 31 según el mes, que representan un día del mes especificado.
hh son dos dígitos, que van del 00 al 23, que representan la hora.
mm son dos dígitos, que van del 00 al 59, que representan el minuto.
ss son dos dígitos, que van del 00 al 59, que representan el segundo. Los valores de 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 de caracteres 19 posiciones como máximo
Tamaño de almacenamiento 4 bytes, fijo.
Exactitud Un minuto
Valor por defecto 1900-01-01 00:00:00
Calendario Gregoriano
(No incluye el rango completo de años.)
Precisión de segundos fraccionariosdefinido por el usuario No
Conocimiento y conservación del desfase horario No
Sensible al horario 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 tipos de datos de fecha y hora, SQL Server rechaza todos los valores que no puede reconocer como fechas u horas. Para obtener información sobre el uso de las funciones CAST y CONVERT con datos de fecha y hora, consulte CAST y CONVERT (Transact-SQL).

Conversión de smalldatetime a otros tipos de fecha y hora

Esta sección describe lo que ocurre cuando un tipo de datos smalldatetime se convierte a otros tipos de datos de fecha y hora.

Para una conversión a fecha, se copian el año, el mes y el día. El siguiente código muestra los resultados de la conversión de un valor smalldatetime a 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 tiempo(n), se copian las horas, los minutos y los segundos. Los segundos fraccionarios se establecen en 0. El siguiente código muestra los resultados de la conversión de un valor smalldatetime a 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 smalldatetime se copia en el valor datetime. Los segundos fraccionarios se establecen en 0. El siguiente código muestra los resultados de la conversión de un valor smalldatetime a 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) 

Para una conversión a datetimeoffset(n), el valor smalldatetime se copia en el valor datetimeoffset(n). Los segundos fraccionarios se establecen en 0, y el desplazamiento de la zona horaria se establece en +00:0. El siguiente código muestra los resultados de la conversión de un valor smalldatetime a 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) 

Para la conversión a datetime2(n), el valor smalldatetime se copia al valor datetime2(n). Los segundos fraccionarios se establecen en 0. El siguiente código muestra los resultados de la conversión de un valor smalldatetime a 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. Casting string literals with seconds to smalldatetime

El siguiente ejemplo compara la conversión de segundos en 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); 
Input Output
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. Comparación de tipos de datos de fecha y hora

El siguiente ejemplo compara los resultados de fundir 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'; 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.