La fonction TIMESTAMP
Le type de données a rien à faire avec une date et une heure !
Il s'agit simplement d'une représentation hexadécimale d'un nombre entier consécutif de 8 octets. Il n'est utile que pour s'assurer qu'une ligne n'a pas changé depuis sa lecture.
Vous pouvez lire l'entier hexadécimal ou si vous voulez un BIGINT
. A titre d'exemple :
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Le résultat est
400756068
Dans les nouvelles versions de SQL Server, il est appelé RowVersion
- puisque c'est vraiment ce que c'est. Voir le Documents MSDN sur la ROWVERSION :
Il s'agit d'un type de données qui expose des nombres binaires uniques, générés automatiquement, dans une base de données. La version de rangée est généralement utilisée comme un mécanisme de gestion des données. de marquage de la version des lignes de la table. Le type de données rowversion est un type de données juste un nombre incrémentiel et ne conserver une date ou une heure . Pour enregistrer une date ou une heure, utilisez un type de données datetime2 type de données.
Alors vous ne peut pas convertir un serveur SQL TIMESTAMP
à une date/heure - ce n'est tout simplement pas une date/heure.
Mais si vous dites timestamp mais qu'en réalité vous voulez dire un DATETIME
vous pouvez alors utiliser n'importe lequel des formats de date valides décrits dans la rubrique CAST et CONVERT dans l'aide MSDN. Ces éléments sont définis et pris en charge par SQL Server dès le départ. Tout autre élément n'est pas pris en charge, par exemple, vous devez effectuer manuellement de nombreux moulages et concaténations (ce qui n'est pas recommandé).
Le format que vous recherchez ressemble un peu au format ODBC canonique (style = 121) :
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
donne :
2011-11-14 10:29:00.470
SQL Server 2012 disposera enfin d'une FORMAT
fonction pour faire un formatage personnalisé......