gpt4 book ai didi

sql - 运算符之间返回空结果

转载 作者:行者123 更新时间:2023-12-03 18:43:24 25 4
gpt4 key购买 nike

我想要获取特定值范围内的记录。这些记录在名为Product的表中可用。该表将此字段用作过滤器:


最低价格
max_price
开始日期
结束日期


假设我要获取所有具有过滤器的记录:


min_price = 5
max_price = 10
开始日期= 03/04/2018
结束日期= 03/04/2018


总记录为:

  | id | price | datetime            |
| 1 | 2 | 01/04/2018 00:00:00 |
| 2 | 5 | 03/04/2018 00:00:00 |
| 3 | 1 | 03/04/2018 00:00:00 |
| 4 | 50 | 02/04/2018 00:00:00 |
| 5 | 10 | 03/04/2018 00:00:00 |


基于指定的过滤器,我应该获得以下记录(ID): 5, 10
我写了这个查询:

m_dbConnection = new SQLiteConnection("Data Source=products.sqlite;Version=3;");
m_dbConnection.Open();

m_dbCommand = new SQLiteCommand("SELECT * FROM Product WHERE " +
"price BETWEEN :min_price AND :max_price AND " +
"datetime BETWEEN :start_date AND :end_date", m_dbConnection );

m_dbCommand.Parameters.Add("min_price", DbType.Decimal).Value = 5;
m_dbCommand.Parameters.Add("max_price", DbType.Decimal).Value = 10;
m_dbCommand.Parameters.Add("start_date", DbType.DateTime).Value = new DateTime(2018, 04, 01);
m_dbCommand.Parameters.Add("end_date", DbType.DateTime).Value = new DateTime(2018, 04, 03);

m_dbCommand.Prepare();

var reader = m_dbCommand.ExecuteReader();

while(reader.Read())
{

} //<- Breakpoint here


该代码永远不会进入循环,因此查询没有返回任何结果。
我在查询中做错了什么?

更新

我发现查询根本无法使用相同的日期间隔,因此如果我将 start_dateend_date指定为与以下相同: 03/04/2018 00:00:00,该查询将不返回任何结果。相反,如果我将其设置为 start_date: 03/04/2018 00:00:00,并将其设置为 end_date: 04/04/2018 00:00:00,它将起作用。

我尝试使用以下代码修复该问题:

SELECT * FROM Product WHERE price BETWEEN :min_price AND :max_price AND datetime BETWEEN DATE(:start_date) AND DATE(:end_date)


并尝试仅将格式设置为 Date(尽管是 time问题):

m_dbCommand.Parameters.Add("start_date", DbType.Date).Value = new DateTime(2018, 04, 03).Date.ToString("yyyy-MM-dd");
m_dbCommand.Parameters.Add("end_date", DbType.Date).Value = new DateTime(2018, 04, 03).Date.ToString("yyyy-MM-dd");


我的解决方案根本行不通。

最佳答案

更改参数的类型,您尝试在日期时间字段中使用小数。

关于sql - 运算符之间返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49625948/

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