根据日期选择行

时间:2018-01-23 11:03:02

标签: c# sql winforms firebird

如果行符合某些条件,我会为列选择SUM,但问题是其中一个条件必须是该日期少于今天的日期。

我在4个连接字符串上使用1个命令字符串(4个不同的数据库4年)

我已经调查了THIS问题,但我不明白我应该怎么做。

目前我有这个命令:

SELECT SUM(UPLACENO) FROM DOKUMENT WHERE VRDOK = 15 AND FLAG = 1 AND KODDOK = 0

这就是我使用它的方式:

FbConnection con1..... //this year
{
    FbCommand cmd = new FbCommand(commandUpAbove);
    ....
}

FbConnection con2..... //year before
{
    FbCommand cmd = new FbCommand(commandUpAbove);
    ....
}

FbConnection con3..... //2 years before
{
    FbCommand cmd = new FbCommand(commandUpAbove);
    ....
}

FbConnection con2..... //3 years before
{
    FbCommand cmd = new FbCommand(commandUpAbove);
    ....
}

我想要完成的是:

  1. 如何选择列DATUM(日期时间)小于myDate(日/月)的行

  2. 由于我在4个数据库中使用相同的命令,我如何设法告诉它选择where date < mydate但不给他一年

  3. 每个数据库为期1年(一年01.01 - 31.12)。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

string commandUpAbove = "SELECT SUM(UPLACENO) FROM DOKUMENT WHERE VRDOK = 15 AND FLAG = 1 AND KODDOK = 0 AND DATUM < '?';";

对于您的每个查询,请使用:

FbConnection con1..... 
{
   FbCommand cmd = new FbCommand(commandUpAbove.Replace("?", mydate.ToString()));
    ....
}

编辑:正如评论中指出的那样,只有在代码中定义了mydate时才应该使用它。如果用户在文本框中输入了mydate,那么DON&#t; T使用它。相反,mydate应该是某种类型的DateTime。还有其他通常更快或更好的方法将参数插入sql命令。