gpt4 book ai didi

c# - 带日期时间选择器的 SQL 语句

转载 作者:行者123 更新时间:2023-11-30 19:14:08 24 4
gpt4 key购买 nike

希望这应该是一个简单的。在 Windows 窗体中使用日期时间选择器时,我希望执行 SQL 语句,如下所示:

string sql = "SELECT * FROM Jobs WHERE JobDate = '" + dtpJobDate.Text + "'";

不幸的是,这实际上并没有提供任何结果,因为 JobDate 字段存储为 DateTime 值。我希望能够搜索该日期的所有记录,无论存储的时间是什么,有什么帮助吗?

新查询:

        SqlDataAdapter da2 = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Jobs WHERE JobDate >= @p_StartDate AND JobDate < @p_EndDate";
cmd.Parameters.Add ("@p_StartDate", SqlDbType.DateTime).Value = dtpJobDate.Value.Date;
cmd.Parameters.Add ("@p_EndDate", SqlDbType.DateTime).Value = dtpJobDate.Value.Date.AddDays(1);
cmd.Connection = conn;
da2.SelectCommand = cmd;
da2.Fill(dt);
dgvJobDiary.DataSource = dt;

非常感谢所有的帮助!

最佳答案

只有一个答案:使用 parametrized queries .

这是出于不同的原因:

  • 安全(没有 SQLInjection 的风险
  • 不再是您打开主题的那些问题
  • 性能。

因此,像这样写你的陈述:

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Jobs WHERE JobDate = @p_Date"
cmd.Parameters.Add ("@p_Date", SqlDbType.DateTime).Value = dtpJobDate.Value;

如果你想忽略时间,那么我认为最好的办法是进行范围搜索,如果时间存储在数据库中,那就是。像这样(只是 SQL 查询):

SELECT * FROM Jobs WHERE JobDate >= @p_StartDate AND JobDate < @p_EndDate

StartDate 将是 dtpJobDate.Value.Date,而 EndDate 将是 dtpJobDate.Value.Date.AddDays(1)

如果时间没有存储在数据库中,那么你可以这样做:

SELECT * FROM Jobs WHERE JobDate = @p_Date

搜索参数应该是 dtpJobDate.Value.Date

关于c# - 带日期时间选择器的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com