2012-01-15 1 views
2

のSQLServerデータ型のdatetimeで動作するように、それは64ビット長である - http://msdn.microsoft.com/en-us/library/ms187819.aspxC++はSqlServerのdatetimeデータ型は、タイムスタンプを保持するために使用され

私はそれで動作するように健全な方法を探していますおそらくC + +、ブーストライブラリの何か?

ありがとうございました。私はこれらの2つの操作を行うことができることのために解決します

EDIT

2012-01-15 16:54:13.123

  • ように2012-01-15 16:54:13.123のような文字列を解析

    • は、一部の人間が読める形式でタイムスタンプを表示しますそれぞれのSqlServer日時の値。ここでEDIT2

  • は、私が今まで知っているものです。私は datetime列のテーブルを持っています。そこから行を選択すると、データ型が DBTYPE_DBTIMESTAMPのこの列が返されます。 http://msdn.microsoft.com/en-us/library/ms187819.aspxによると、それは、しかし、私は、例えば、バック16バイトの値を取得し、8バイトの値である必要があります:私はこの形式のいずれかの記述を見つけ、それを調査すると、次の構造を明らかにできなかった
    00070015000c07db 00000000001f0007 
    

    0007 0015 000c 07db 00000000 001f 0007 
    ^ ^^^   ^^
    | | | |    | | 
    | | | |    | +--- minutes (7) 
    | | | |    +----+--- seconds (31) 
    | | | +-------------+----+--- year (2011) 
    | | +----+-------------+----+--- month (12) 
    | +----+----+-------------+----+--- day  (21) 
    +----+----+----+-------------+----+--- hour (7) 
    

    これは2011-12-21 07:07:31に相当します。だから、これは簡単だと思われますが、ドキュメントはどこにありますか? DBTYPE_DBTIMESTAMPの値は常にこの形式で報告されますか?それはSqlSever CE固有か、エクスプレスと他の味が同じように動作しますか?ミリ秒を含めることはできますか?

    私はOLEDBを使用してデータベースにアクセスしています。

    +4

    C++を使っているときには「sane way」というものはありません。 – ScarletAmaranth

    +0

    アップデートを参照してください。 – mark

    +0

    http://msdn.microsoft.com/en-us/library/bb677303.aspxによるとMS SqlServerには「TimeStamp」データ型がありません。 SqlServerデータ型の 'datetime'ファミリに対応するOLEDB指定' DBTYPE_DBTIMESTAMP'があります。 – mark

    答えて

    1

    なぜSQL Serverの側面にあるものを扱わないのですか?

    ビューを作成すると、DBTYPE_DBTIMESTAMPにdatetimeまたはvarcharを戻すことができます。あなたは、あなたが望むフォーマットを定義することができます。

    Use the cast()- or convert()- Function 
    

    値を書き戻すには、SQL Serverでも関数を使用できます。 あなたは関数を使うことができます:

    Convert(datetime, [value], [format]) 
    
    +0

    私はデータベースへの読み取り専用アクセスしか持っていないので、ビューを作成することはできません。 – mark

    +1

    これはselect文でも実行できます。 – chris