2016-11-16 5 views
0

フロートデータ型として日付を持つ列があります。彼らはYYYYMMDD形式です。これらの日付をdatetime形式に戻す必要があります。floatをdatetimeに変換する際の算術オーバーフローエラー(SQL Server 2014)

私は次のことをやってみました

Select top 1 Date_col,CAST(FLOOR((CAST(Date_col AS numeric(10,10)))) AS DATETIME) from dbo.table_2016 

私に必要なのは、データ型を変換することですが、私は、可能な場合は、フォーマットを維持したいと思います。

+0

は、代わりに変換してみてください。 https://msdn.microsoft.com/en-us/library/ms187928.aspx –

+0

'CAST(FLOOR(date_col)AS DATETIME)'? –

+0

それはSOに関する同様の質問に対する答えでした。私はそれを試みると思った。すでに普通の "キャスト"を試みたが役に立たなかった – Adit2789

答えて

1

はこれを試してみてください:

select 
    DATEFROMPARTS( 
     left(convert(char(8), convert(integer, Date_Col)), 4), 
     substring(convert(char(8), convert(integer, Date_Col)), 5, 2), 
     substring(convert(char(8), convert(integer, Date_Col)), 7, 2)) 
from 
    table_2016; 
+0

ありがとう。コードを実行した後、何らかの理由で日付が0のテーブルが1行あることに気付きました。これが原因でエラーが発生する可能性がありました。あなたのコードは、私がそれを実現するのを助けました – Adit2789

+0

私はあなたがそれを把握してうれしいです。 –

+1

@ Adit2789 - ここで問題が解決したと思うのは、日付が1900年の始まりからの日数に基づいて浮動小数点の後の部分が時間を表すことに基づいて浮動することです日付の文字列が数値に変更された - 実際には年が近づいている55000 - SQL 9999を超えている - – Cato

関連する問題