- 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';