データをエクスポートする場合(rclick db |タスク|スクリプトの生成...)、日時列は次のようにエクスポートされます。
CAST(0xFFFF2E4600000000 AS DateTime)
の上
select CAST(0xFFFF2E4600000000 AS DateTime)
..SQL Server Mgmt Studioで次のようになります:
1753-01-01 00:00:00.000
これ(つまり、ここでは0xFFFF2E4600000000)を別のプログラムで通常の日時に変換する必要があります。
これで、1900年1月1日以降の日付でフォーマットがどのように機能するかがわかりました。
first 4 bytes == the days since 1st Jan 1900
2nd 4 bytes == number of ticks since midnight (each tick is 1/300 of a second).
これは機能しますが、上記の16進数(0xFFFF2E4600000000)が1753-01-01にどのように変換されるかを理解できません。2の補数、1900年から1753年までの日のさまざまな変換など-何も機能しません。それが私に投げかけるグーグルでの検索結果も役に立たない。お知らせ下さい!
更新:
とにかく2の補数と関係があるようです。以下を参照してください。ただし、Pythonシェルではまだ完全には機能しません。
>>> e=1900-1753
>>> e
147
>>>
>>> e*=365
>>> e
53655
>>> e=e-(1<<32)
>>> e
-4294913641L
>>> hex(e)
'-0xffff2e69L'
これは0xFFFF2E46に近いですが、完全にはありません。何が起きてる?
更新2:
うるう日?