次を使用して、テーブル内の日付を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
文字列と比較します。これが、比較が機能しない理由です。@dateFilter
2012-04-12
もちろんDATE
、いくつかのコメントがすでに述べているように、タイプのパラメータをストアドプロシージャに渡す方がはるかに優れたソリューションになります。これにより、次のような単純な式を使用して、日付T_date
と渡されたDATE
値を比較できます。@dateFilter
CONVERT(DATE,T_date)=@dateFilter