sql >> データベース >  >> RDS >> Sqlserver

SQLServerのタイムスタンプ列を日時形式に変換する方法

    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が追加されます カスタムフォーマットを行う関数......



    1. MySQLで行をフェッチするクエリを選択します

    2. 同じステートメントで挿入のIDを取得します

    3. @BatchSizeは賢い使用ですか、それとも愚かな使用ですか?

    4. 行の目標、パート4:アンチ結合アンチパターン