30日前からSQLのから2つのテーブルの行をフェッチしたいのですが、私の日付の列はnvarcharで、私はそれを日付に変換できません 私はいくつかのことを試みましたが、任意の結果を受けて、常にエラーを得た返された行から30日前のsqlテーブル
これは私がSQLへ@Dateことにより、プログラムからTodayTimeパラメータを送って、私のクエリと ある
[dbo].[Report30Days]
@Date nvarchar(10)
as
select
coalesce(S.Date,B.Date) Date,
coalesce(S.TAccount,0) sTAccount,
coalesce(S.Remaining,0) sRemaining,
coalesce(B.TAccount,0) bTAccount,
coalesce(B.Remaining,0) bRemaining
from
(select
Date,sum(TAccount) TAccount, sum(Remaining) Remaining
from SaleInvoices
where
DateDiff(day,convert(datetime,@Date,110),convert(datetime,Date,110))<=30
group by Date) S
Full Outer Join
(select
Date,sum(TAccount) TAccount, sum(Remaining) Remaining
from BuyInvoices
where
DateDiff(day,convert(datetime,@Date,110),convert(datetime,Date,110))<=30
group by Date) B
on
S.Date=B.Date
私の問題は、ここでは
where
DateDiff(day,convert(datetime,@Date,110),convert(datetime,Date,110))<=30
です
テーブルの日付列と@Date形式=> 2017年2月2日
は後にこの手順を実行し、このエラーが表示されます。
日時データ型にnvarcharデータ型の変換その結果、範囲外の値が生じました。
は
が本当にdate
データの代わりに入力する(またはdatetime
、またはdatetime2
)である必要があり、非常に
正確なエラーは何ですか。また、 'Date'のデータ型は? –
今日の日付をストアドプロシージャのパラメータとして渡す必要があるのはなぜですか? SQLスクリプトで今日の日付を取得できます。また、なぜパラメータの型をnvarcharとして定義する必要がありますか? – Sparrow
あまりあいまいではない日付の例を使用できますか? 12月31日のように? – SqlZim