次を使用して、テーブル内の日付をyyyy-mm-dd hh:mi:ss.mmm日付形式に変換してから、その形式の文字列パラメータと比較する必要がありLIKEます。
最小限の変更で既存のコードを修正するには、に変更T_dateしてCONVERT(VARCHAR(50),T_date,121)、以下を生成します。
'select t_typday from ' + @dbName+ '.dbo.Calendar ' +
' where CONVERT(VARCHAR(50),T_date,121) LIKE ''' + @dateFilter + '%''';
変換を実行しない場合は、ローカル形式の文字列@@LANGUAGE(設定に基づく)を比較します。たとえば、を含むApr 12 2012 12:00AM文字列と比較します。これが、比較が機能しない理由です。@dateFilter2012-04-12
もちろんDATE、いくつかのコメントがすでに述べているように、タイプのパラメータをストアドプロシージャに渡す方がはるかに優れたソリューションになります。これにより、次のような単純な式を使用して、日付T_dateと渡されたDATE値を比較できます。@dateFilter
CONVERT(DATE,T_date)=@dateFilter