该表达式包含未定义的函数调用DATEADD()| FilterExpression |日期时间过滤器

时间:2014-09-16 15:13:36

标签: c# asp.net datetime sqldatasource dateadd

我有一个网格视图,我想过滤它只显示某个日期间隔的数据(从日期A到日期B,包括A和B)

我使用SqlDataSource和FilterExpression,最初我使用这个FilterExpression:

FilterExpression="Submitted_time >= '{0}' AND Submitted_time <= '{1}'">

但{1}日期的数据未包含在结果中(虽然我使用'&lt; =')(可能是因为时间(小时/分钟),所以我设法添加了1天到{1}:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CTECS %>" SelectCommand="SELECT * FROM [Event] ORDER BY [Id] DESC"
                        FilterExpression="Submitted_time >= '{0}' AND Submitted_time <= DATEADD(day, 1, '{1}')">
                        <FilterParameters>
                            <asp:ControlParameter Name="FromDate" ControlID="oCalendar1" PropertyName="SelectedDate" DefaultValue="1/1/1800" Type="DateTime" />
                            <asp:ControlParameter Name="ToDate" ControlID="oCalendar2" PropertyName="SelectedDate" DefaultValue="1/1/3000" Type="DateTime" />
                        </FilterParameters>
                    </asp:SqlDataSource>

然后Visual Studio给我: 该表达式包含未定义的函数调用DATEADD()

此处有任何解决方案,我的目标只是将日期{1}的数据包含在结果中......

2 个答案:

答案 0 :(得分:0)

您的约会时间需要引用它。现在它把它当作双重对待。

尝试:

DATEADD(day, 1, '{1}')

答案 1 :(得分:0)

取自: http://www.experts-exchange.com/Programming/Editors_IDEs/Q_22907598.html

[参考filterexpression中的dateadd]

  

不,它只是一个字符串样式过滤器。你必须评估   date,然后将其作为字符串传递给filterexpression

E.g。你不能在你的filterexpression中使用内置的sql函数(至少我是如何解释它)。您需要DateTime.AddDays(1)日期oCalendar2ControlParameter toDate