2017-02-27 20 views
1

この次のクエリで何が問題になっていますか?私はエラーを見つけることができません。誰でもこの問題がある 私を助けることができますか?私はこのエラーを取得していSQL Serverに存在しないクエリのエラー

IF (NOT EXISTS(SELECT * 
       FROM chennai_metro_data 
       WHERE TIME1 ='09:00' AND DATE1 ='1-23-2017')) 
BEGIN 
    INSERT INTO chennai_metro_data 
    VALUES (2021700002,'1-23-2017','09:00',1,0,555555) 
END 
ELSE 
BEGIN 
    UPDATE chennai_metro_data 
    SET CUMFLOW = 555555 
    WHERE TIME1 = '09:00' AND DATE1 = '1-23-2017' 
END 

: - 多くの問題を回避するのに役立ちますベストプラクティスとして

Msg 206, Level 16, State 2, Line 1
Operand type clash: int is incompatible with date

+3

ベストプラクティスとして、** INSERTを使用するときに**挿入する列のリスト**を常に**定義する必要があります。これは多くの問題を回避するのに役立ちます! –

+1

また、日付データ型の文字列表現では、yyyy-mm-ddまたはyyyymmddを使用します。 –

+0

@marc_sそれは動作します!ありがとうございました。あなたのアドバイスに従って、私は列のリストを追加しました。 – Lingaraj

答えて

4

、あなたは常にあなたがINSERTを使用しているときに挿入している列のリストを定義する必要があります!

も: - ちょうど日付&時間の日付(時間がない)、またはYYYY-MM-DDTHH:MM:SSためYYYYMDDD日付の、任意の言語&地域の設定に依存しないようにする、ISO-8601形式を使用してみてください。

だから、このコードを試してみてください。

INSERT INTO chennai_metro_data(col1, col2, ...., colN) 
VALUES (2021700002, '20170123', '09:00', 1, 0, 555555) 

を、あなたがにデータを挿入したい、そのテーブルからあなたの実際の列名colN thorugh col1を交換してください。

+1

JUstを追加すると、列が表示されていない挿入にアダルト・ミスマッチ・エラーがあると、挿入物の列が表の列と同じ順序になっていないことがほぼ確実です。これは、常に列リストを追加することが重要な理由の1つです。また、実際にはテーブルの列順が実際に変更されることもあります。彼らは(物事が壊れてしまうために)すべきではありません。 – HLGEM

関連する問題