0

変換の問題を解決するためにあなたの好意が必要です.私が好きなコード

ALTER PROCEDURE [WORKFLOW_APP].[DIAGNOSISCD_CAR]
        @v_monthstr    CHAR ,
        @v_monthend    CHAR ,
        @v_year        CHAR ,
        @v_state_cd    CHAR ,
        @v_claim_key   CHAR ,
        @v_contractor  CHAR

DECLARE @v_makedatestr   VARCHAR(10)
DECLARE @v_makedateend   VARCHAR(10)

SELECT @v_makedatestr  = '01-' + @v_monthstr + '-' + @v_year
SELECT @v_makedateend  = '01-' + @v_monthend + '-' + @v_year


SELECT @v_datebegin  = CONVERT(DATETIME, @v_makedatestr,105)----error
SELECT @v_dateend  = DATEADD(D, -DAY(DATEADD(M, 1, CONVERT(DATETIME, @v_makedateend ,105))), DATEADD(M, 1, CONVERT(DATETIME, @v_makedateend ,105)))---error

このコードはツールを使用して形成され、どこか手動で変更されました。

私は得ています

「文字列から日時を変換する際に変換に失敗しました。」

「エラー」コメントで。

convert 関数、cast 関数を使用してみましたが、解決できませんでした。

誰もがエラーを提案し、そのエラーに適切な変換コードを書きます。

Oracle ストアド プロシージャを SQL Server 2005 に変換しています。

SQL Server Management Studio Express 2005 を使用しています。

上記のコードの何が間違っていて、正しいコードは何ですか?

コードはありますか?????////// 正しい変換用

4

1 に答える 1

0

文字列を日時に変換する方法は、異なるカルチャ関連の設定を使用してサーバーでスクリプトを実行する場合、異なる結果につながる可能性があります。

文字列としての日時については、年、月、というように文字列を作成する規則に従うことをお勧めしますyyyy-MM-dd

SELECT @v_makedatestr  = @v_year + '-' + @v_monthstr + '-01' 
SELECT @v_makedateend  = @v_year + '-' + @v_monthend + '-01' 

次に、キャストを行うことができます:

cast(@v_makedatestr as datetime);
cast(@v_makedateend as datetime);
于 2012-06-30T09:09:12.060 に答える