TIMESTAMP
do SQL Server tipo de dados tem nada a ver com uma data e hora! É apenas uma representação hexadecimal de um inteiro consecutivo de 8 bytes - é bom apenas para garantir que uma linha não seja alterada desde que foi lida.
Você pode ler o inteiro hexadecimal ou se quiser um
BIGINT
. Como um exemplo:SELECT CAST (0x0000000017E30D64 AS BIGINT)
O resultado é
400756068
Nas versões mais recentes do SQL Server, está sendo chamado de
RowVersion
- já que isso é realmente o que é. Veja os documentos do MSDN em ROWVERSION:
É um tipo de dados que expõe números binários exclusivos gerados automaticamente em um banco de dados. rowversion é geralmente usado como um mecanismo para linhas de tabela de registro de versão. O tipo de dadosrowversion é apenas um número incremental e não preserva uma data ou hora . Para gravar uma data ou hora, use um tipo datetime2data.
Então você não pode converter um SQL Server
TIMESTAMP
para uma data/hora - não é apenas uma data/hora. Mas se você está dizendo timestamp, mas na verdade você quer dizer um
DATETIME
coluna - então você pode usar qualquer um desses formatos de data válidos descritos no tópico CAST e CONVERT na ajuda do MSDN. Esses são definidos e suportados "fora da caixa" pelo SQL Server. Qualquer outra coisa não é suportada, por exemplo. você tem que fazer muita conversão e concatenação manual (não recomendado). O formato que você está procurando se parece um pouco com o ODBC canônico (estilo =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
dá:
2011-11-14 10:29:00.470
O SQL Server 2012 finalmente terá um
FORMAT
função para fazer formatação personalizada......