SQL Server 2012で作業しています。データセットの日付列は、_41547
_のようになります。列はnvarchar (255)
にあります。これを次のようなものに変換したい:_yyyy-mm-dd hh:mm:ss
_(例:_2013-09-14 12:23:23.98933090
_)。しかし、私はこれを行うことはできません。私は次のコードを使用しています:
_select convert(datetime, date_column, 6)
_
しかし、これは次のエラーを出しています:
_Msg 241, Level 16, State 1, Line 1 Conversion failed when converting
date and/or time from character string.
_
何が悪いのですか?
私はこれを行う方法を見つけました。
最初にnvarcharをintに変換してから、日付時刻に変換する必要があります。私は次のコードを使用しました:
Select convert(datetime, (convert (int, [date_column])), 6) as 'convertedDateTime' from mytable
日付は実際には数値(floatまたはinteger)であり、char列に格納されます。したがって、まず次のように数値に変換する必要があります(この場合はfloat
に)。
_select convert(datetime, CONVERT(float,date_column))
_
_41547.5
_の値は次のようになります。
_`2013-10-02 12:00:00`
_
スタイル引数、あなたの場合、_6
_は、char型から、またはchar型に変換するときにのみ必要です。この場合、それは不要であり、無視されます。
注意:float値は_1900-01-01
_からの日数です。
例えばselect convert(datetime, CONVERT(float,9.0))
=> _1900-01-10 00:00:00
_; select dateadd(day,9.0,'1900-01-01')
と同じです。
数値の小数部も日数に相当します。つまり、_0.5
_は半日/ 12時間です。
例えばselect convert(datetime, CONVERT(float,.5))
=> _1900-01-01 12:00:00
_。 (ここでは、floatではなく整数のみを処理するため、dateaddとの比較は意味がありません)。
それを行う簡単な方法もあります。
select convert(date,cast (date_Column+ 19000000 as nvarchar(10)))
as date_Column_Formated
from table_Name
SELECT CONVERT(DATETIME,CONVERT(INT,date_column))
6形式は次のとおりです: "dd mon yy"このように:SELECT convert(datetime、'23 OCT 16 '、6)他の形式ではエラーが発生します