2016-06-30 4 views
0

データを挿入しようとすると失敗する場所を構築しています。私はこのエラーを取得する上で、私は、コードを実行すると日付の挿入エラー - 文字列から日付および/または時刻を変換するときに変換に失敗しました

INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total]) 
    SELECT 
     CONVERT(DATE, getdate()) AS 'Date', 
     DATENAME(yyyy, getdate()) AS 'Year', 
     DATENAME(mm, getdate()) AS 'Month', 
     COUNT([BG_BUG_ID]) AS 'Total' 
    FROM 
     [maint_maintenance_db].[td].[BUG] 
    WHERE 
     YEAR(DETECTION_DATE]) = YEAR(getdate()) 
     AND MONTH([DETECTION_DATE]) = MONTH(getdate()) 

:これが挿入され、私はそれが動作CASTを使用するようにコードを変更すると

Msg 241, Level 16, State 1, Procedure usp_TC_TESTCYCL_ID_COUNT_PILOT_UCPATH, Line 10
Conversion failed when converting date and/or time from character string.

が、適切な値を返しません。以下はコードです

INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total]) 
    SELECT 
     CAST(getdate() AS Date), 
     CAST(getdate() AS datetime), 
     CAST(getdate() AS datetime), 
     COUNT([BG_BUG_ID]) AS 'Total' 
    FROM 
     [maint_maintenance_db].[td].[BUG] 
    WHERE 
     YEAR(DETECTION_DATE]) = YEAR(getdate()) 
     AND MONTH([DETECTION_DATE]) = MONTH(getdate()) 

これを動作させるにはどうすればよいですか?どんな助けもありがとう!これは、[月]のように見えます

おかげ

+0

テーブルの列定義とは何ですか?DEFECTS_MAINTENANCE – thepanch

+0

まず、最後の2つの列の間のINSERTステートメントにカンマがありません。 – BJones

+0

どのデータ型が 'DETECTION_DATE'ですか? – BJones

答えて

1

は、DateTime型です。
キャストが働く理由です : CAST(日時などのgetdate())あなたのINSERTで

あなたが暗黙的に日付に2桁の数字を変換しようとしていると、それが失敗している変換使用。

,datename(mm,getdate()) AS 'Month' 

月を整数またはchar(2)に変更すると、すべて設定する必要があります。

関連する問題