TIMESTAMP
di SQL Server tipo di dati non ha niente a che fare con una data e un'ora!
È solo una rappresentazione esadecimale di un intero consecutivo di 8 byte:è utile solo per assicurarsi che una riga non sia cambiata da quando è stata letta.
Puoi leggere l'intero esadecimale o se vuoi un BIGINT
. Ad esempio:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Il risultato è
400756068
Nelle versioni più recenti di SQL Server, viene chiamato RowVersion
- poiché è proprio così. Consulta i documenti MSDN su ROWVERSION:
È un tipo di dati che espone numeri binari univoci generati automaticamente all'interno di un database. rowversion è generalmente usato come meccanismo per le righe della tabella di timbratura della versione. Il tipo di dati della versione riga è solo un numero incrementale e non conserva una data o un'ora . Per registrare una data o un'ora, usa un tipo di dati datetime2.
Quindi non puoi convertire un TIMESTAMP
di SQL Server a una data/ora:semplicemente non è una data/ora.
Ma se stai dicendo timestamp ma in realtà intendi un DATETIME
colonna:è possibile utilizzare uno qualsiasi di quei formati di data validi descritti nell'argomento CAST e CONVERT nella Guida di MSDN. Questi sono definiti e supportati "out of the box" da SQL Server. Qualsiasi altra cosa non è supportata, ad es. devi eseguire molti casting e concatenamenti manuali (non consigliato).
Il formato che stai cercando assomiglia un po' al canonico ODBC (stile =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
dà:
2011-11-14 10:29:00.470
SQL Server 2012 avrà finalmente un FORMAT
funzione per eseguire la formattazione personalizzata......