数据库中的UserLoginPerDay
列具有DateTime
属性。我的想法是,我抓住这一列与其他一些列,并显示在我的asp.net网站的网格视图。
然而,我注意到,在写这句话,我必须输入一个时间值,否则它不会显示任何记录。我只想能够在我的日历中选择一天,并且所有与该天相等的记录都会显示,而忽略时间。
我使用的是SqlDataSource
ASPX页
<asp:Calendar ID="Calendar1" runat="server"
onselectionchanged="Calendar1_SelectionChanged"></asp:Calendar>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:LoginProject %>"
SelectCommand="SELECT UserLoginToday.UserId, Gebruikers.Lastname, Gebruikers.Firstname, UserLoginToday.UserLoginPerDay FROM Gebruikers INNER JOIN UserLoginToday ON Gebruikers.UserId = UserLoginToday.UserId WHERE (UserLoginToday.UserLoginPerDay = ISNULL(@datefilter, UserLoginToday.UserLoginPerDay))" CancelSelectOnNullParameter="false"><SelectParameters>
<asp:ControlParameter ControlID="Calendar1" Name="datefilter"
PropertyName="SelectedDate" />
</SelectParameters>
</asp:SqlDataSource>
DateTime包含日期和时间数据。除非数据库中的所有行都以0作为时间部分,并且应用程序也将0作为时间部分发送,否则它们永远不会相等。
如果你的数据库是MS的SQL Server,我建议你使用DATEDIFF函数来比较日期。
DATEDIFF(DAY, date1, date2) = 0
如果两个日期相同,为真,忽略值的时间部分。