Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como converter o DateTime em Time


Time não é armazenado com seu formato de exibição no SQL Server.
Portanto, da perspectiva do usuário, você pode dizer que não tem formato.
Claro, isso não é totalmente preciso, pois possui um formato de armazenamento , mas como um usuário médio você não pode realmente usá-lo.
Isso é verdade para todos os tipos de dados de data e hora:
Date , DateTimeOffset , DateTime2 , SmallDateTime , DateTime e Time .

Se você precisar de um formato, não precisará transmitir para time mas para um char . Use Convert para obter o char você precisa:
SELECT CONVERT(char(10), [time], 108) as CSTTime 

Aqui estão alguns dados de fundo, se você estiver interessado:

Neste artigo publicado em 2000, o escritor explica detalhadamente como o SQL Server trata datas e horas. Duvido que algo significativo tenha mudado entre 2000 e 2015 na maneira como o SQL Server armazena date , time e datetime valores internamente.

Aqui estão as citações relevantes, se você não quiser ler tudo:

Então, como o SQL Server armazena as datas internamente? Ele usa 8 bytes para armazenar um valor de data e hora — os primeiros 4 para a data e os segundos 4 para a hora. O SQL Server pode interpretar os dois conjuntos de 4 bytes como inteiros.
........
........
O SQL Server armazena o segundo inteiro pelo tempo como o número de tiques do relógio após a meia-noite. Um segundo contém 300 tiques, portanto, um tique é igual a 3,3 milissegundos (ms).

desde time é realmente armazenado como um inteiro de 4 bytes, ele realmente não tem um formato como parte integrante do tipo de dados.

Você também pode conferir este artigo para obter uma explicação mais detalhada com exemplos de código.