DateTimePicker c#仅适用于Months



请尽早提供帮助我有一个表格,我在博物馆名称中添加展览,通过Datetimepicker添加日期,人们出现,然后将其保存在sql数据库中。然后在另一个表格中,我想在两个Datetimepickers中选择两个日期,并在数据网格中显示两个日期之间有一些展览,但它没有正确显示我,我甚至无法解释的错误

private void button3_Click(object sender, EventArgs e)
{
string period = "SELECT* FROM vistavka WHERE Date BETWEEN '" + dateTimePicker1.Value.ToString() + "' AND '" + dateTimePicker2.Value.ToString() + "'";
LoadData(period);
dataGridView2.Columns[0].Visible = false;
/*dataGridView2.Columns[1].Visible = false*/;
dataGridView2.AllowUserToAddRows = false;
button1.Enabled = true;
}

对吗?我希望它能像2020年11月12日到2020年12月21日之间的活动一样显示

我想你可以在这里使用这个问题的答案。

基本上,你只需要输入正确的格式:

string period = "SELECT* FROM vistavka WHERE Date BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";

对于奖励积分,您也可以切换到使用字符串插值,使其更具可读性。

string period = $"SELECT* FROM vistavka WHERE Date BETWEEN '{dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss.fff")} ' AND '{dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss.fff")} '";

更新:

  • 请查看为什么这样做是一个安全问题
  • 然后在此处了解SQL参数
  • 最后你可以看到这个关于如何做日期参数的答案。基本上,您不应该为了将C#日期时间传递到SQL而将其转换为字符串。正如您将在这些链接中看到的那样,C#已经有了这样的机制,这是有充分理由的

使用日期到字符串的转换是错误的

"SELECT* FROM vistavka WHERE Date BETWEEN '" + dateTimePicker1.Value.ToString() + "' AND '" + dateTimePicker2.Value.ToString() + "'";

ToString()格式依赖于区域性,不应使用

您必须传递带有参数和参数值的SQL查询(作为DateTime对象(,才能通过SQL客户端API将日期从DateTime转换为SQL服务器使用的参数值格式。

请在这里找到MS SQL示例

最新更新