SQL Server non ha nulla a che fare con una data e l'ora!
È solo una rappresentazione binaria di un numero consecutivo, è utile solo per assicurarsi che una riga non sia cambiata da quando è stata letta.
Nelle versioni più recenti di SQL Server, viene chiamato RowVersion
- poiché è davvero quello che è. Vedere la MSDN docs on ROWVERSION:
è un tipo di dati che espone generate automaticamente, numeri binari unici all'interno di un database. rowversion viene generalmente utilizzato come meccanismo per le righe della tabella di stampa della versione. Il tipo di dati rowversion è solo un numero incrementale e non conserva una data o un'ora. Per registrare una data o un'ora, utilizzare un tipo di dati datetime2 .
Quindi non può convertire uno SQL Server TIMESTAMP
ad una data/ora - non è solo una data/ora.
Ma se stai dicendo timestamp ma in realtà si intende una colonna di DATETIME
- quindi è possibile utilizzare uno qualsiasi di questi formati di data validi descritte nell'argomento CAST and CONVERT nella Guida MSDN. Quelli sono definiti e supportati "out of the box" da SQL Server. Qualsiasi altra cosa non è supportata, ad es. devi fare un sacco di casting manuale e concatenazione (non consigliato).
Il formato che stai cercando sembra un po 'come il ODBC canonica (style = 121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
dà:
2011-11-14 10:29:00.470
SQL Server 2012 will finally have a FORMAT
function fare formattazione personalizzata ... ...
fonte
2011-11-14 09:18:28
Probabilmente il mio più grande problema con SQL Server. Perché chiamarlo un timestamp se non posso dire il tempo con esso? – BelgoCanadian
@BelgoCanadian: chiedere a Sybase: questa è una funzionalità che è sempre stata in Sybase/SQL Server ..... –