2013-04-18 21 views
6

時刻形式を「10:02:22 PM」に変換するには、SQL Serverの日付形式に変換する必要があります。SQL ServerでVarcharを時刻に変換

私はこのようなデータの列を持っています。私はCSVファイルからこの列をインポートし、これをDateTime Formatに変換して、Date Time Functionsを使用できるようにします。

この列を正しいDateTime形式の別のテーブルに挿入できます。

+0

その時間データのスペースは本当に存在していますか? – RichardTheKiwi

+0

日付と時刻の値は、フォーマットなしでDBに格納されます。これは、クライアントアプリケーションの形式の日付と時刻の値です。 –

+0

@RichardTheKiwi:はい、AM/PMの前にスペースがあります。 – SarangArd

答えて

1

変換する必要はありません。すべての時間のデータが文字列から解析可能である(スペースをリードするか、しない)場合は、

INSERT otherTable 
SELECT ....., timeAsVarchar, ... 
    FROM csvTable 

を使用した場合、暗黙的なキャストが発生し、クエリが美しく動作します。しかし、時間に変換することはできません不良またはブランクデータの可能性がある場合は、その最初の

INSERT otherTable 
SELECT ....., CASE WHEN ISDATE(timeAsVarchar)=1 THEN timeAsVarchar END, ... 
    FROM csvTable 

ELSE NULLをテストすることは、私はそれを左のように暗示されています。

+0

暗黙のキャスト変換に失敗し、「文字列から日付や時刻を変換すると変換に失敗しました」 「どうやって」「otherTable」のTime列を定義するにはどうすればよいですか? ?私は列を変換しようとすると、変換が失敗。しかし、私は個別にそれを行う際に、それが成功したいくつかの理由 – SarangArd

2

このリンクを使用してください:http://msdn.microsoft.com/en-us/library/ms187928.aspx

SELECT CONVERT(DATETIME, '10:00:22 PM'); 

が与える

SELECT CONVERT(TIME, '10:00:22 PM'); 

は、次の出力を与えるだけ時間変換のために

... ...

22:00:22.000000 

日付と時刻タイム変換...出力後...

1900-01-01 22:00:22.0000 

注:datetimeの場合、特定の日付を入力する必要があります。それ以外の場合は、デフォルトの世紀の日付とみなされます。

+0

。 AM値ではなく、PM値を変換することができる理由は? – SarangArd

+0

私が知っているかもしれない。 それはにISN 「00:00:01 PM」を「00:59:59 PM」に変換することができます しかし「01:00:00 PM」に変換することができます あなたは私を助けることができますか? – SarangArd

+1

12時間制では、会話に失敗した理由は00時間ではありません。 –

関連する問題