web-dev-qa-db-ja.com

数値を日時に変換する

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.
_

何が悪いのですか?

5
Sadat Mainuddin

私はこれを行う方法を見つけました。

最初にnvarcharをintに変換してから、日付時刻に変換する必要があります。私は次のコードを使用しました:

Select convert(datetime, (convert (int, [date_column])), 6) as 'convertedDateTime' from mytable
1
Sadat Mainuddin

日付は実際には数値(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との比較は意味がありません)。

10
cars10m

それを行う簡単な方法もあります。

select convert(date,cast (date_Column+ 19000000 as nvarchar(10)))
    as date_Column_Formated
  from table_Name
1
Mina
SELECT CONVERT(DATETIME,CONVERT(INT,date_column))
0
R S P

6形式は次のとおりです: "dd mon yy"このように:SELECT convert(datetime、'23 OCT 16 '、6)他の形式ではエラーが発生します

0
Nikita