SQLServerのTIMESTAMP
データ型には何もありません 日付と時刻に関係します!
これは、連続する8バイト整数の16進表現にすぎません。これは、行が読み取られてから変更されていないことを確認する場合にのみ有効です。
16進整数を読み取るか、BIGINT
が必要な場合は読み取ることができます 。例として:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
結果は
です400756068
SQL Serverの新しいバージョンでは、RowVersion
と呼ばれています。 -それがまさにそれだからです。 ROWVERSIONに関するMSDNドキュメントを参照してください:
データベース内で自動的に生成された一意の2進数を公開するデータ型です。 rowversionは通常、テーブル行にバージョンスタンプを付けるためのメカニズムとして使用されます。行バージョンのデータ型は増分数であり、日付や時刻は保持されません 。日付または時刻を記録するには、datetime2dataタイプを使用します。
だからあなたはできません SQLServerのTIMESTAMP
を変換します 日付/時刻に-それは日付/時刻ではありません。
ただし、タイムスタンプと言っているのに、実際にはDATETIME
を意味している場合 列-その後、MSDNヘルプのCASTおよびCONVERTトピックで説明されている有効な日付形式のいずれかを使用できます。これらは、SQLServerによって「すぐに」定義およびサポートされます。それ以外はサポートされていません。多くの手動キャストと連結を行う必要があります(推奨されません)。
探している形式は、 ODBC canonicalに少し似ています。 (スタイル=121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
与える:
2011-11-14 10:29:00.470
SQLServer2012には最終的にFORMAT
が追加されます カスタムフォーマットを行う関数......