TIMESTAMP
van SQL Server datatype heeft niets te maken hebben met een datum en tijd!
Het is gewoon een hexadecimale weergave van een opeenvolgend geheel getal van 8 bytes - het is alleen goed om ervoor te zorgen dat een rij niet is gewijzigd sinds deze is gelezen.
U kunt het hexadecimale gehele getal aflezen of als u een BIGINT
. wilt . Als voorbeeld:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Het resultaat is
400756068
In nieuwere versies van SQL Server heet het RowVersion
- want dat is het echt. Zie de MSDN-documenten op ROWVERSION:
Is een gegevenstype dat automatisch gegenereerde, unieke binaire getallen in een database blootlegt. rowversion wordt over het algemeen gebruikt als een mechanisme voor het afstempelen van tabelrijen. Het gegevenstype van de rijversie is slechts een oplopend getal en behoudt geen datum of tijd . Gebruik een datetime2data-type om een datum of tijd vast te leggen.
Dus je kunt niet converteer een SQL Server TIMESTAMP
naar een datum/tijd - het is gewoon geen datum/tijd.
Maar als je tijdstempel zegt, maar je bedoelt een DATETIME
kolom - dan kunt u elk van die geldige datumnotaties gebruiken die worden beschreven in het onderwerp CAST en CONVERT in de MSDN-help. Die worden "out of the box" gedefinieerd en ondersteund door SQL Server. Al het andere wordt niet ondersteund, b.v. je moet veel handmatig casten en aaneenschakelen (niet aanbevolen).
Het formaat dat u zoekt lijkt een beetje op de ODBC canonieke (stijl =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
geeft:
2011-11-14 10:29:00.470
SQL Server 2012 heeft eindelijk een FORMAT
functie om aangepaste opmaak te doen......