【问题标题】:How to Display data in a label from database only if today date matches the date for that record仅当今天的日期与该记录的日期匹配时,如何从数据库的标签中显示数据
【发布时间】:2014-03-31 12:12:06
【问题描述】:

我有一张名为 EVENT_ANNOUNCE 的表。目前我只知道如何将数据库中的每个数据(即 EVENTNAME 列字段)显示到 3 个标签中。我只想在表单上最多包含 3 个事件,所以我创建了 3 个标签,每条记录一个标签。

但我只想在今天的日期与该记录的日期匹配时才显示数据。由于今天的日期是 2014 年 3 月 31 日,因此只应显示记录 1 和 2,因为记录 1 是 31/03/2014 到 01/04/2014,记录 2 是 31/03/2014 到 31/03/2014。

如果我创建了 4 条具有今天日期的记录。第三个标签什么也没有出来。我仍然希望标签 3 在 Atrium 展示 IT fair。如果我制作了 3 条具有今天日期的记录(这意味着没有第四条记录,即测试)。这 3 个标签将分别显示为在 Cheers 的 Sales、50% all item 和 Atrium 的 IT fair 没问题。

public partial class number2 : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{

    string strConnString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
    string str;
    SqlCommand com;

    SqlConnection con = new SqlConnection(strConnString);
    con.Open();
    str = "select * from EVENT_ANNOUNCE";
    com = new SqlCommand(str, con);
    SqlDataReader reader = com.ExecuteReader();

    reader.Read();
    lblEvent1.Text = reader["EVENTNAME"].ToString();
    reader.Read();

    lblEvent2.Text = reader["EVENTNAME"].ToString();
    reader.Read();

    lblEvent3.Text = reader["EVENTNAME"].ToString();
    reader.Close();
    con.Close();

}
}

【问题讨论】:

    标签: c# date webforms label


    【解决方案1】:

    您可以按当前日期过滤记录。这应该只获取当前日期在开始/结束日期范围内的记录。

    select * from EVENT_ANNOUNCE
    where getdate() >= STARTDATE
      and cast(getdate() as Date) <= ENDDATE
    

    startdateenddate 值的时间部分是 00:00:00.000,因此使用当前日期过滤结果不会返回第二条记录,除非您恰好在 午夜,精确到毫秒。

    因此,请致电cast 删除当前日期的时间部分,这样您就应该获得两条记录。


    另外,如果您的查询没有返回记录,为了避免错误,请使用HasRows 属性:

    var events = new List<string>();
    
    if (reader.HasRows)
    {
        while (reader.Read())
            events.Add(reader["EVENTNAME"].ToString());
    }
    
    if (events.Count >= 1)
        lblEvent1.Text = events[0];
    if (events.Count >= 2)
        lblEvent2.Text = events[1];
    if (events.Count == 3)
        lblEvent3.Text = events[2];
    

    【讨论】:

    • 呃,我应该把它写成 CURRENT_TIMESTAMP 吗?这是哪里来的。那是代表今天日期的代码吗? @格兰特温尼
    • 我尝试使用 CURRENT_TIMESTAMP 和 GETDATE() 在服务器资源管理器上使用右键单击新查询。它只出现了记录1。它不应该也出现记录2吗?我添加了图像。并且可以帮助我替换为 while (reader.HasRows) 并向我展示代码,因为我有错误。 @格兰特温尼
    • 谢谢,它现在给我两条记录。当没有数据存在错误时,我留下了无效读取。可以帮我替换为 while (reader.HasRows) 并向我展示代码,因为我有错误。 @格兰特温尼
    • 我出错了。添加了图像。因为今天只显示两条记录,所以第三个标签码有错误。但是会有一天会有 3 个事件,所以我需要有第三个标签和代码。 @格兰特温尼
    • 标签 1 上没有记录 1。添加图像 @Grant Winney
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多