0

varchar の日付列があります。日時形式に変換する必要があります。

私のデータは varchar:29-JUL-11 02.44.29.984664000 PM で次のようになります

これを次のような日時形式にしたい: 29-JUL-11 02.44.29.984664000 PM

次のクエリを使用しています。

select convert (datetime, (convert (float, [KYC_STATUS_CHANGED_DATE])),120) from [dbo].[KYC_Data_31122012]

しかし、次のエラーが発生しています:

データ型 varchar を float に変換中にエラーが発生しました

私は何を間違っていますか?

4

4 に答える 4

1

varchar の日付列があります。

そもそも間違っています。データ用に作成されたデータ型を使用する必要があります。

日時形式に変換する必要があります。

ASP.NET を使用している場合 (SQL サーバーの使用法から推測しています)、これを使用できます。

var time = Convert.ToDateTime("some_time");

でも

私のデータは varchar:29-JUL-11 02.44.29.984664000 PM で次のようになります

これを次のような日時形式にしたい: 29-JUL-11 02.44.29.984664000 PM

これは何だと思いますか?私はこれを時間とは見ていません。私にとっては、時間といくつかの文字列の組み合わせです。

データ型 varchar を float に変換中にエラーが発生しました

varchar を float に変換しています。float は小数のデータ型です。浮動小数には、数値の間に浮動小数があります。したがって、varchar を datetime に変換するのではなく、float に変換するコードを記述していると思います。

SqlServer select の代わりに、私が行ったようにページで変換してみてください。

2011 年 7 月 29 日 02.44.29.984664000 PM

このことで、「:」はどこにありますか? サーバーは、その中に時間があるかどうかを推測しません。最初にデータ型を日時に変換してみてください。

がんばれ、乾杯!

于 2013-10-10T09:55:35.157 に答える
1

あなたは完全に独り占めして、置換/部分文字列を実行して答えを得ることができます

select cast(Replace(SUBSTRING('29-JUL-11 02.44.29.984664000 PM', 
0, len('29-JUL-11 02.44.29.984664000 PM') - 9),'.',':') as datetime)

醜いが、それは動作します!

于 2013-10-10T09:56:07.893 に答える
0

日付の形式が間違っています

正しい形式は次のようなものです

29-JUL-11 02:44:29.985 PM

そしてそうではありません

29-JUL-11 02.44.29.985 PM
于 2013-10-10T09:28:47.190 に答える
0

ミリ秒の精度を 3 桁に制限すると、日時が取得されます。

set @str = '29-JUL-11 02.44.29.984664000 PM'
select cast(Replace(SUbSTRING(@str,0,len(@str)-8) + SUBSTRING(@str,len(@str)-2,len(@str)),'.',':') as datetime)
于 2013-10-10T09:47:24.980 に答える