2011-12-16 9 views
2

1314637182953のような13桁の数値をSQL Serverのdatetimeに変換するにはどうすればよいですか?キャストと変換の両方で直接算術オーバーフローエラーが発生します。SQL Server - 13桁の数字をdatetimeに変換する

以下のクエリで

同じ結果:

select Convert(datetime, cast(START_DATE as varchar(8)), 112), * 
from table 
+1

数が何を表しているのでしょうか? – dasblinkenlight

+0

この列定義は、長さが9で精度が19の数値ですが、名前(START_DATE)に示されるように、日付が含まれています。この列の値はすべて13桁の数字なので、実際の日付を取得する必要があります。 – legendofawesomeness

+0

あなたが指定した例が翻訳する日付を知っていますか? –

答えて

5

が、それはミリ秒単位でUNIX timeだと仮定すると、これを試してみてください。数については

DATEADD(SECOND, START_DATE/1000 ,'1970/1/1') 

をあなたのポスト、SQL-2008リターンから2011-08-29 16:59:42.000

+0

恐ろしい!これはそれでした。ありがとう。 – legendofawesomeness

1

我々は、上記のコードでオーバーフローエラーが発生する可能性があるエポック(1970年1月1日)をはるかに過ぎています。
それは以下のように1000で割る前に、BIGINTデータ型として、問題のフィールドをキャストすることによって簡単に修正することができます。

DATEADD(SECOND, CAST(START_DATE as BIGINT)/1000 ,'1970/1/1') 
関連する問題