Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C中的SQL从VFPDB检索数据,选择基于日期的数据_C#_Visual Foxpro - Fatal编程技术网

C# 使用C中的SQL从VFPDB检索数据,选择基于日期的数据

C# 使用C中的SQL从VFPDB检索数据,选择基于日期的数据,c#,visual-foxpro,C#,Visual Foxpro,我们使用的是使用VFP db的Abra套件软件。我有一个C语言的小程序,我想用它从数据库中检索数据并生成一个csv文件。此时,我的问题是根据我在SQL语句中指定的日期范围获取数据。下面是我的SQL语句,无论出于什么原因,我看到了2008年的记录,即06/09/2008。我做错了什么?因为当我阅读SQL如何工作时,我应该能够在“2007-06-01”和“2007-06-06”之间执行WHERE chkdate,但我总是得到“运算符/操作数类型不匹配”,这就是我在当前SQL语句中使用CAST的原因

我们使用的是使用VFP db的Abra套件软件。我有一个C语言的小程序,我想用它从数据库中检索数据并生成一个csv文件。此时,我的问题是根据我在SQL语句中指定的日期范围获取数据。下面是我的SQL语句,无论出于什么原因,我看到了2008年的记录,即06/09/2008。我做错了什么?因为当我阅读SQL如何工作时,我应该能够在“2007-06-01”和“2007-06-06”之间执行WHERE chkdate,但我总是得到“运算符/操作数类型不匹配”,这就是我在当前SQL语句中使用CAST的原因

string SelectCmd = "SELECT TOP 100 p_empno, p_fname, p_lname, chknumber, chkamount, CAST(chkdate AS varchar(10)) " +
        "FROM hrpersnl " +
        "INNER JOIN prckhist ON hrpersnl.p_empno = prckhist.empno " +
        "WHERE CAST(chkdate AS varchar(10)) BETWEEN '06/06/2007' AND '06/09/2007' " +
        "ORDER BY p_empno";


在两个日期之间使用大括号而不是撇号,如{06/06/2007}和{06/09/2007}

在两个日期之间使用大括号而不是撇号,如{06/06/2007}和{06/09/2007}

如果要将所有内容转换为varchar,则需要进行字符串比较,不是日期比较,我想这是你想要的。您可能需要将日期字符串更改为日期类型才能使其正常工作。在Oracle中,类似于“TO_DATE…”的内容不确定您的sql风格…抱歉,我在WHERE语句中输入了错误的代码,我只是更新了它如果您希望避免学习VFP语法。。。您应该签出,或者如果您要将所有内容都转换为varchar,那么您将要进行字符串比较,而不是日期比较,这是我假设您想要的。您可能需要将日期字符串更改为日期类型才能使其正常工作。在Oracle中,类似于“TO_DATE…”的内容不确定您的sql风格…抱歉,我在WHERE语句中输入了错误的代码,我只是更新了它如果您希望避免学习VFP语法。。。您应该检查chkdate在{06/06/2007和06/09/2007}之间的位置。我尝试了这个,但它给了我语法错误no、{06/06/2007}和{06/09/2007}嘿,就是这样。令人惊叹的请问为什么要戴牙套?我只是想知道,因为到目前为止,我发现的所有sql语句的示例都使用撇号。我从未使用过Abra套件软件,也从未使用过VFP。我只是在四处寻找你的问题,发现你的答案就在下面。shrugBecause VFP的日期类型使用大括号作为分隔符。VFP不是SQL后端,尽管它支持相当多的SQL。chkdate在{06/06/2007和06/09/2007}之间我尝试过这个,但它给了我语法错误否,{06/06/2007}和{06/09/2007}嘿,就是这样。令人惊叹的请问为什么要戴牙套?我只是想知道,因为到目前为止,我发现的所有sql语句的示例都使用撇号。我从未使用过Abra套件软件,也从未使用过VFP。我只是在四处寻找你的问题,发现你的答案就在下面。shrugBecause VFP的日期类型使用大括号作为分隔符。VFP不是SQL后端,尽管它支持相当数量的SQL。