高手救我!用foxpro数据库,日期型字段在SQL中该如何表述

jnsemt 2003-05-20 10:07:20
有两字段date1(开始日期),date2(结束日期),类型为DATE型,数据库为Foxpro,
有下面sql语句,运行时出错

d=dateadd("d",-30,date) '取得当前时间的前30天
d1=date '取得当前时间

strSQL = "SELECT C.*,B.namedc FROM recs c, zdzb b WHERE c.kh="&kh&" and c.jh=b.jh and c.date2>"#& d &# and c.date2<"#& d1 &#" '搜索当前日期前30天的记录

出错提示为

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'

[Microsoft][ODBC Visual FoxPro Driver]Operator/operand type mismatch.


用strSQL = "SELECT C.*,B.namedc FROM recs c, zdzb b WHERE c.kh="&kh&" and c.jh=b.jh and datediff(d,'"&d&"',c.date2)>0 and datediff(d,'"&d1&"',c.date2)<0" 也不行

出错提示为

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

[Microsoft][ODBC Visual FoxPro Driver]SQL: Column 'D' is not found.


...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jnsemt 2003-05-20
  • 打赏
  • 举报
回复
rida(),你说的办法好象对了,我想再问问,gomonth()是个什么函数?如果我想得到20天以前的数据呢?
jnsemt 2003-05-20
  • 打赏
  • 举报
回复
我在用asp做一个web网页,用的数据库是foxpro
whint 2003-05-20
  • 打赏
  • 举报
回复
不知道你是用什么语言写的程序,不过怎么看你写的都不对,是不是应该这样
d1=date '取得当前时间
d=dateadd(d1,-30,date) '取得当前时间的前30天


strSQL = "SELECT C.*,B.namedc FROM recs c, zdzb b WHERE c.kh="&kh&" and c.jh=b.jh and c.date2>d and c.date2<d1" '搜索当前日期前30天的记录

注意:d和d1必须是全局变量,而且是日期型的
magnetmoon 2003-05-20
  • 打赏
  • 举报
回复
try:
d=date()-30 && '取得当前时间的前30天
d1=date() &&'取得当前时间

strSQL = "SELECT C.*,B.namedc FROM recs c, zdzb b WHERE c.kh="&kh&" and c.jh=b.jh and c.date2>?d and c.date2<?d1"
xiolig 2003-05-20
  • 打赏
  • 举报
回复
因为没有写列具体的执行语句,两分种情况讨论:
1、直接执行VFP提供的 SELECT-SQL 语句:日期常量应按FOXPRO格式:{^2003-05-20};
2、如果是把 SELECT 语句通过 SQLEXEC 函数提交 SQL SERVER 解析执行:'2003-05-20'
注意:第二种情况下的界定符是单引号。
rida 2003-05-20
  • 打赏
  • 举报
回复
strSQL = "SELECT C.*,B.namedc FROM recs c, zdzb b WHERE c.kh="&kh&" and c.jh=b.jh and c.date2>gomonth(date(),-1) and c.date2<date() '搜索当前日期前30天的记录
rida 2003-05-20
  • 打赏
  • 举报
回复
对于给定的日期表达式或日期时间表达式,返回指定月份数目以前或以后的日期。
语法

GOMONTH(dExpression | tExpression, nNumberOfMonths)

参数

dExpression

指定日期表达式。相对于此日期,GOMONTH( ) 函数返回日期。

tExpression

指定日期时间表达式。相对于此日期时间,GOMONTH( ) 函数返回日期。

nNumberOfMonths

指定从给定日期或日期时间开始的月数。如果 nNumberOfMonths 为正,GOMONTH( ) 函数返回给定日期或日期时间 nNumberOfMonths
个月以后的日期;如果 nNumberOfMonths 为负,GOMONTH( ) 函数返回给定日期或日期时间 nNumberOfMonths 个月以前的日期。

返回值类型
日期型

--如果我想得到20天以前的数据: date()-20

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧