【问题标题】:Sort a DateTime Column with a Calendar使用日历对 DateTime 列进行排序
【发布时间】:2014-06-22 21:05:39
【问题描述】:

我的数据库中的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>

【问题讨论】:

  • 这是一个 column (不是 collum 你一直在写.....)
  • ^^ 对不起伙计,英语不是我的母语。
  • 没关系——这就是我提到它的原因——拿起它,以后用它,你的英语又变好了! :-)
  • 您使用的是什么版本的 SQL Server?
  • Convert(date,UserLoginToday.UserLoginPerDay) 如果您使用的是 Sql Server 2008 或更高版本。

标签: c# asp.net datetime calendar


【解决方案1】:

DateTime 包括日期和时间数据。除非数据库中的所有行的时间部分都为 0,并且您的应用程序也发送 0 作为时间部分,否则它们永远不会相等。

如果您的数据库是 MS 的 SQL Server,我建议您使用 DATEDIFF 函数来比较日期。

DATEDIFF(DAY, date1, date2) = 0

如果两个日期相同,则为真,忽略值的时间部分。

【讨论】:

  • 我正在使用 MS 的 SQL Server,你能告诉我在哪里实现它到我的语句中吗?
  • 我觉得应该是WHERE (DATEDIFF(DAY, UserLoginToday.UserLoginPerDay, ISNULL(@datefilter, UserLoginToday.UserLoginPerDay)) = 0)
  • 虽然你也可以改成WHERE (@datefilter IS NULL OR DATEDIFF(DAY, UserLoginToday.UserLoginPerDay, @datefilter) = 0)。除非我打错字,否则当您给出空值时,这可以避免不必要的比较。
  • 这对我有用,但现在当我将记录写入我的 GridView 时,它会显示日期,并且总是显示它后面的 00:00:00。我可以隐藏吗?还是显示记录中的时间?
  • 这是一个不同的问题,它是关于格式化值的。即使我知道如何(我对 asp.net 不是很熟悉),这里也将是题外话。
猜你喜欢
  • 1970-01-01
  • 2012-11-27
  • 2013-11-10
  • 2012-02-18
  • 2020-07-08
  • 2015-04-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多