私のストアド プロシージャは 1 つのパラメーターを受け入れ、それは日時です。パラメータが渡されない場合は、デフォルトでgetdate()
関数に設定します。
ALTER PROCEDURE [dbo].[myexport]
(
@start datetime = null
)
AS
BEGIN
SET NOCOUNT ON;
set @start = isnull(@start, getdate())
パラメータを指定せずにストアド プロシージャを実行すると、正しい結果が得られます。日付パラメーターを渡すと、次のエラーが発生します。
exec myexport '2013-04-22 00:00:00:00'
Msg 245, Level 16, State 1, Procedure myexport, line 16
Conversion failed when converting the varchar value '(-) 0mms' to data type int.
これが私の @start date のコンテキストです:
select
count(distinct pid),
'Inpatient Hosp'
from
form_names fn
inner join form_items fi on fn.id = fi.form_name
inner join form_records fr on fn.id = fr.form_name
left outer join form_answers fa on fi.id = fa.form_item and fa.form_record = fr.id
where
fn.name like '%Transfer of Health Information%'
and dateadd(dd, 0, datediff(dd, 0, fr.date)) = dateadd(dd, 0, datediff(dd, 0, @start))
and fi.text like '%date of return%'
and fa.id is NULL
編集 -
私のストアド プロシージャ ID はかなり大きく、多くのサブ クエリがありますが、問題のあるクエリを見つけたと思います。
select
count(*),
'PPD +'
from
form_records fr
inner join form_names fn on fn.id = fr.form_Name
inner join form_items fi on fn.id = fi.form_name
inner join form_answers fa on fr.id = fa.form_record
and fa.form_item = fi.id
where
fn.id = 3
and fa.form_item = 30
and fa.text not like '%neg%'
and dateadd(dd, 0, datediff(dd, 0, fa.entered_date)) = dateadd(dd, 0, datediff(dd, 0, @start))
and CAST(fa.text AS INT) >= 10
でこのクエリを手動で実行するとgetdate()
結果は正しいのですが、で実行すると'2013-04-22 00:00:'00
エラーが発生します。
のデータ型fa.entered_date
はdatetime
.
どんな助けでも大歓迎です。