hora (Transact-SQL)
Define una hora de un día. La hora no distingue la zona horaria y está basada en un reloj de 24 horas.
Para obtener información general acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos que son comunes a los tipos de datos y funciones de fecha y hora, vea Usar datos de fecha y hora.
Descripción de time
Propiedad |
Valor |
---|---|
Sintaxis |
time [ (fractional second precision) ] |
Uso |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
fractional seconds precision |
Especifica el número de dígitos de la parte fraccionaria de los segundos. Este valor puede ser un entero de 0 a 7. La precisión predeterminada de las fracciones es 7 (100 ns). |
Uso |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
Formato de literal de cadena predeterminado (se usa para el cliente de nivel inferior) |
hh:mm:ss[.nnnnnnn] Para obtener más información, vea la sección acerca de la compatibilidad con versiones anteriores de clientes de nivel inferior de Usar datos de fecha y hora. |
Intervalo |
De 00:00:00.0000000 a 23:59:59.9999999 |
Intervalos de elementos |
hh es una cifra de dos dígitos, comprendida entre 0 y 23, que representa la hora. mm es una cifra de dos dígitos, comprendida entre 0 y 59, que representa los minutos. ss es una cifra de dos dígitos, comprendida entre 0 y 59, que representa los segundos. n* es una cifra de cero a siete dígitos, comprendida entre 0 y 9999999, que representa las fracciones de segundos. |
Longitud de caracteres |
De 8 posiciones como mínimo (hh:mm:ss) a 16 como máximo (hh:mm:ss.nnnnnnn) |
Precisión, escala (el usuario especifica sólo la escala) |
Escala especificadaResultado (precisión, escala)Longitud de la columna (bytes)Fracciones segundos precisión
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7
|
Tamaño de almacenamiento |
5 bytes (fijo) es el valor predeterminado con el valor predeterminado de 100 ns de precisión de fracciones de segundo. |
Precisión |
100 nanosegundos |
Valor predeterminado |
00:00:00 Este valor se usa en la parte de hora anexada para la conversión implícita de date a datetime2 o datetimeoffset. |
Precisión de fracciones de segundo definida por el usuario |
Sí |
Conservación y reconocimiento del desplazamiento de zona horaria |
No |
Reconocimiento del horario de verano |
No |
Formatos de literales de cadena compatibles para time
En la siguiente tabla se muestran los formatos de literales de cadena válidos para el tipo de datos time.
SQL Server |
Descripción |
---|---|
hh:mm[:ss][:fracciones de segundo][AM][PM] hh:mm[:ss][.fracciones de segundo][AM][PM] hhAM[PM] hh AM[PM] |
El valor de hora 0 representa la hora desde medianoche (AM), sin tener en cuenta si se especifica AM. PM no se puede especificar si la hora es igual a 0. Las horas de 01 a 11 representan horas antes del mediodía si no se especifica AM ni PM. Si se especifica AM, los valores representan las horas antes del mediodía. Si se especifica PM, los valores representan las horas después del mediodía. El valor de hora 12 representa el mediodía si no se especifica AM ni PM. Si se especifica AM, el valor representa la hora que empieza a medianoche. Si se especifica PM, el valor representa la hora que empieza a mediodía. Por ejemplo, 12:01 es 1 minuto después del mediodía, igual que 12:01 PM, mientras que 12:01 AM es 1 minuto después de medianoche. Especificar 12:01 AM es lo mismo que 00:01 ó 00:01 AM. Los valores de hora de 13 a 23 representan horas después del mediodía si no se especifica AM o PM. Si se especifica PM, los valores también representan las horas después del mediodía. No es posible especificar AM si el valor de hora es de 13 a 23. Un valor de hora de 24 no es válido. Para representar la medianoche, use 12:00 AM o 00:00. Los milisegundos se pueden preceder de dos puntos (:) o un punto (.). Si se usan dos puntos, el número indica milésimas de segundo. Si se usa un punto, un único dígito indica décimas de segundo, dos dígitos indica centésimas de segundo y tres dígitos indica milésimas de segundo. Por ejemplo, 12:30:20:1 indica las 12:30, 20 segundos y una milésima; 12:30:20.1 indica las 12:30, 20 segundos y una décima. |
ISO 8601 |
Notas |
---|---|
hh:mm:ss hh:mm[:ss][.fracciones de segundo] |
|
ODBC |
Notas |
---|---|
{t 'hh:mm:ss[.fracciones de segundo]'} |
Específico de la API de ODBC. Funciona en SQL Server 2008 al igual que en SQL Server 2005. |
Compatibilidad de time con las normas ANSI e ISO 8601
No se admite el uso de la hora 24 para representar la medianoche y la inserción de un segundo intercalar respecto a 59, como se define en el estándar ISO 8601 (5.3.2 y 5.3), a efectos de compatibilidad con versiones anteriores y mantener la coherencia con los tipos de fecha y hora existentes. No están definidos en el estándar SQL 2003.
El formato predeterminado del literal de cadena (que se usa para el cliente de nivel inferior) se ajustará al formato del estándar SQL, definido como hh:mm:ss[.nnnnnnn]. Este formato se parece a la definición de ISO 8601 para TIME, sin incluir las fracciones de segundo.
Ejemplos
A. Comparar tipos de datos date y time
En el ejemplo siguiente se comparan los resultados de convertir una cadena a los tipos de datos date y time.
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 |
Salida |
---|---|
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 |
B. Insertar literales de cadena time válidos en una columna time(7)
En la siguiente tabla se enumeran varios literales de cadena que se pueden insertar en una columna de tipo de datos time(7) con los valores que se almacenan en dicha columna.
Tipo de formato de literal de cadena |
Literal de cadena insertado |
Valor de time(7) almacenado |
Descripción |
---|---|---|---|
SQL Server |
'01:01:01:123AM' |
01:01:01.1230000 |
Si dos puntos (:) preceden la precisión en fracciones de segundo, la escala no puede tener más de tres posiciones ya que, de lo contrario, se producirá un error. |
SQL Server |
'01:01:01.1234567 AM' |
01:01:01.1234567 |
Si se especifica AM o PM, la hora se almacenará en formato de 24 horas sin el literal AM o PM |
SQL Server |
'01:01:01.1234567 PM' |
13:01:01.1234567 |
Si se especifica AM o PM, la hora se almacenará en formato de 24 horas sin el literal AM o PM |
SQL Server |
'01:01:01.1234567PM' |
13:01:01.1234567 |
El espacio antes de AM o PM es opcional. |
SQL Server |
'01AM' |
01:00:00.0000000 |
Si sólo se especifica la hora, todos los demás valores son 0. |
SQL Server |
'01 AM' |
01:00:00.0000000 |
El espacio antes de AM o PM es opcional. |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
Si no se especifican las fracciones de segundo, cada posición definida por el tipo de datos será 0. |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
Para cumplir las especificaciones del estándar ISO 8601, use el formato de 24 horas, no el formato AM o PM. |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
Se puede insertar el designador opcional de diferencia de zona horaria (TZD), aunque no se almacenará. |
C. Insertar literales de cadena en columnas de tipo de datos date y time
En la siguiente tabla, la primera columna muestra un literal de cadena time que se insertará en una columna de la tabla de base de datos con el tipo de datos date o time indicado en la segunda columna. La tercera columna muestra el valor que se almacenará en la columna de la tabla de base de datos.
Literal de cadena insertado |
Tipo de datos de columna |
Valor almacenado en la columna |
Descripción |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
Si la precisión en fracciones de segundo supera el valor especificado en la columna, la cadena quedará truncada y no generará un error. |
'2007-05-07' |
date |
NULL |
Cualquier valor de time producirá un error en la instrucción INSERT. |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
Cualquier valor de precisión en fracciones de segundo producirá un error en la instrucción INSERT. |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
Cualquier precisión en segundos de más de tres posiciones producirá un error en la instrucción INSERT. |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
Si la precisión en fracciones de segundo supera el valor especificado en la columna, la cadena quedará truncada y no generará un error. |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
Si la precisión en fracciones de segundo supera el valor especificado en la columna, la cadena quedará truncada y no generará un error. |
Vea también