我想在30天前从sql中获取两个表的行 但我的日期列是nvarchar,我无法将其转换为日期 我尝试了几件事但是没有收到任何结果而且总是出错了
这是我的查询和 我将来自@Date程序的TodayTime参数发送到sql
[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格式=&gt; 2017年2月2日
执行此程序后,将显示以下错误:
将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。
请指导我
非常感谢
答案 0 :(得分:1)
grep
应该是@date
数据类型(或date
或datetime
)。将n / varchar用于日期是一个糟糕的决定。
datetime2