显示最近7天的行
本文关键字:7天 最近 显示 | 更新日期: 2023-09-27 18:22:13
希望有人能告诉我为什么这不起作用。我给TextBox
一个默认值,然后使用Query在7天内选择*。我以为我有这个工作,但显然现在没有,我也没有改变,所以当我看到它工作时,一定是在想象它。用户可以在文本框中输入一个整数,并使用它来修改查询中的参数。它连接了一个减号,所以默认情况下传递给查询的参数是-7
,但不管值是多少(我调试并确保传递的值默认是-7
)。我知道它不起作用,因为数据库中有超过7天的条目。我的查询错了吗?
ASPX-
<asp:TextBox ID="newsDaySelector" runat="server" AutoPostBack="true" Width="20" Text="7"></asp:TextBox>
背后的代码
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SFGSConnectionString1"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM vw_front_news WHERE newsDateStamp < DATEDIFF(day,@newsDate,GETDATE()) ORDER BY newsDateStamp DESC", conn))
{
int newsDate = Convert.ToInt32("-" + newsDaySelector.Text);
cmd.Parameters.AddWithValue("@newsDate", newsDate);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds);
conn.Close();
newsRepeater.DataSource = ds;
newsRepeater.DataBind();
}
}
使用dateadd而不是datediff-
dateadd(day,datediff(day,0,GetDate()) + 7,0)
查询问题
@newsDate=-7
比
SELECT * FROM vw_front_news WHERE newsDateStamp >= DATEADD(day,@newsDate,GETDATE()) and newsDateStamp <= GETDATE() ORDER BY newsDateStamp DESC
或
SELECT * FROM vw_front_news WHERE DATEDIFF(D,GETDATE(),newsDateStamp ) > @newsDate ORDER BY newsDateStamp DESC
尝试更改您的查询-
SELECT *
FROM vw_front_news
WHERE newsDateStamp BETWEEN DATEADD(DAY, -@newsDate, GETDATE()) AND GETDATE()
ORDER BY newsDateStamp DESC