hora (Transact-SQL)
Define uma hora de um dia. A hora se encontra sem reconhecimento de fuso horário e se baseia em um relógio de 24 horas.
Para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.
time Description
Propriedade |
Valor |
---|---|
Sintaxe |
time [ (fractional second precision) ] |
Uso |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
fractional seconds precision |
Especifica o número de dígitos para a parte fracionária dos segundos. Pode ser um inteiro de 0 a 7. A precisão fracionária padrão é de 7 (100 ns). |
Uso |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
Formato literal de cadeia de caracteres padrão (usado para cliente de nível inferior) |
hh:mm:ss[.nnnnnnn] Para obter mais informações, consulte a seção Compatibilidade com versões anteriores para clientes de nível inferior em Usando dados de data e hora. |
Intervalo |
00:00:00.0000000 a 23:59:59.9999999 |
Intervalos de elementos |
hh são dois dígitos, variando de 0 a 23, que representam a hora. mm são dois dígitos, variando de 0 a 59, que representam o minuto. ss são dois dígitos, variando de 0 a 59, que representam o segundo. n* é de zero a sete dígitos, variando de 0 a 9999999, que representa as frações de segundo. |
Comprimento de caractere |
Mínimo de 8 posições (hh:mm:ss) até um máximo de 16 (hh:mm:ss.nnnnnnn) |
Precisão, escala (usuário especifica apenas escala) |
Escala especificadaResultado (precisão, escala)Comprimento de coluna (bytes)Fracionário segundos precisão
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
|
Tamanho de armazenamento |
5 bytes, fixos, são o padrão com o padrão de precisão de frações de segundo de 100 ns. |
Exatidão |
100 nanossegundos |
Valor padrão |
00:00:00 Este valor é usado para a parte da hora anexada para conversão implícita de date em datetime2 ou datetimeoffset. |
Precisão de frações de segundo definida pelo usuário |
Sim |
Reconhecimento e preservação do deslocamento de fuso horário |
Não |
Reconhecimento de horário de verão |
Não |
Há suporte para formatos de literais de cadeia de caracteres para hora
A tabela a seguir mostra os formatos de literais de cadeia de caracteres válidos para o tipo de dados time.
SQL Server |
Descrição |
---|---|
hh:mm[:ss][:segundos fracionários][AM][PM] hh:mm[:ss][.segundos fracionários][AM][PM] hhAM[PM] hh AM [PM] |
O valor de hora 0 representa a hora depois da meia-noite (AM), independentemente de AM ter sido especificado. PM não pode ser especificado quando a hora é igual a 0. Os valores de hora de 01 a 11 representam as horas antes do meio-dia, se não for especificado AM nem PM. Os valores também representam as horas antes do meio-dia quando AM é especificado. Os valores representarão as horas depois do meio-dia, se PM for especificado. O valor de hora 12 representa a hora que começa ao meio-dia, se não for especificado AM nem PM. Se AM for especificado, o valor representará a hora que começa à meia-noite. Se PM for especificado, o valor representará a hora que começa ao meio-dia. Por exemplo, 12:01 é 1 minuto depois do meio-dia, assim como 12:01 PM; e 12:01 AM é 1 minuto depois da meia-noite. Especificar 12:01 AM é igual a especificar 00:01 ou 00:01 AM. Os valores de hora de 13 a 23 representam as horas após o meio-dia, se AM nem PM estiverem especificados. Os valores também representam as horas após o meio-dia quando PM é especificado. AM não pode ser especificado quando o valor de hora é de 13 a 23. Um valor de hora de 24 não é válido. Para representar meia-noite, use 12:00 AM ou 00:00. Os milissegundos podem ser precedidos por ou dois-pontos (:) ou ponto (.). Se for usado dois-pontos, o número significa milésimos de segundo. Se for usado um ponto, um único dígito significa décimos de segundo, dois dígitos significa centésimos de segundo e três dígitos, milésimos de segundo. Por exemplo, 12:30:20:1 indica vinte e um milésimos de segundo após 12:30; 12:30:20.1 indica vinte e um décimos de segundo após 12:30. |
ISO 8601 |
Notas |
---|---|
hh:mm:ss hh:mm[:ss][.segundos fracionários] |
|
ODBC |
Notas |
---|---|
{t 'hh:mm:ss[.segundos fracionários]'} |
Específico à API ODBC. Funções em SQL Server 2008 como em SQL Server 2005. |
Conformidade de hora com os padrões ANSI e ISO 8601
Não há suporte para o uso da hora 24 para representar a meia-noite e saltar o segundo em 59, como definido pelo ISO 8601 (5.3.2 e 5.3), para a manutenção de compatibilidade retroativa e consistência com os tipos de data e hora existentes. Eles não estão definidos pelo padrão 2003 do SQL.
O formato de literais de cadeia de caracteres padrão (usado para cliente de nível inferior) se alinhará com o formulário padrão do SQL, que está definido como hh:mm:ss[.nnnnnnn]. Esse formato se assemelha à definição do ISO 8601 para TIME que exclui segundos fracionários.
Exemplos
A. Comparando tipos de dados de data e hora
O exemplo a seguir compara os resultados da conversão de uma cadeia de caracteres para cada tipo de dados date e 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 dados |
Saída |
---|---|
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. Inserindo literais de cadeia de caracteres válidos na coluna time(7)
A tabela a seguir lista os diferentes literais de cadeia de caracteres que podem ser inseridos em uma coluna de tipo de dados time(7) com os valores que, então, são armazenados nessa coluna.
Tipo de formato de literal de cadeia de caracteres |
Literal de cadeia de caracteres inserido |
valor de time(7) que é armazenado |
Descrição |
---|---|---|---|
SQL Server |
'01:01:01:123AM' |
01:01:01.1230000 |
Quando dois pontos (:) precedem a precisão de frações de segundo, a escala não pode exceder três posições ou ocorrerá um erro. |
SQL Server |
'01:01:01.1234567 AM' |
01:01:01.1234567 |
Quando AM ou PM é especificado, a hora é armazenada em formato de 24 horas sem o literal AM ou PM |
SQL Server |
'01:01:01.1234567 PM' |
13:01:01.1234567 |
Quando AM ou PM é especificado, a hora é armazenada em formato de 24 horas sem o literal AM ou PM |
SQL Server |
'01:01:01.1234567PM' |
13:01:01.1234567 |
Um espaço antes de AM ou PM é opcional. |
SQL Server |
'01AM' |
01:00:00.0000000 |
Quando só a hora é especificada, todos os outros valores são 0. |
SQL Server |
'01 AM' |
01:00:00.0000000 |
Um espaço antes de AM ou PM é opcional. |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
Quando a precisão das frações de segundo não é especificada, cada posição definida pelo tipo de dados é 0. |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
Para estar de acordo com o ISO 8601, use o formato de 24 horas, e não AM ou PM. |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
A diferença de fuso horário (TZD) opcional é permitida na entrada, mas não é armazenada. |
C. Inserindo o literal de cadeia de caracteres nas colunas de cada tipo de data e hora
Na tabela a seguir, a primeira coluna mostra um literal de cadeia de caracteres de hora a ser inserido em uma coluna da tabela do banco de dados do tipo de dados de data e hora exibido na segunda coluna. A terceira coluna mostra o valor que será armazenado na coluna da tabela do banco de dados.
Literal de cadeia de caracteres inserido |
Tipo de dados da coluna |
Valor que é armazenado na coluna |
Descrição |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
Se a precisão das frações de segundo exceder o valor especificado para a coluna, a cadeia de caracteres será truncada sem erro. |
'2007-05-07' |
date |
NULL |
Qualquer valor de hora fará a instrução INSERT falhar. |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
Qualquer valor de precisão de fração de segundo fará a instrução INSERT falhar. |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
Qualquer precisão de segundo mais extensa do que três posições fará a instrução INSERT falhar. |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
Se a precisão das frações de segundo exceder o valor especificado para a coluna, a cadeia de caracteres será truncada sem erro. |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
Se a precisão das frações de segundo exceder o valor especificado para a coluna, a cadeia de caracteres será truncada sem erro. |
Consulte também