怎么用sql查询vfp中的日期数据(100分)

  • 主题发起人 主题发起人 Bitman
  • 开始时间 开始时间
B

Bitman

Unregistered / Unconfirmed
GUEST, unregistred user!
最近作了一个小程序,它涉及到对日期的查询
我的sql是这样写的
select * from jb where 日期<{^2001/09/01}
这个sql在vfp里面能通过,但在delphi下不行,
后来我按delphi帮助里面说的换成
select * from jb where 日期<"2001/09/01"
但是依然通不过,现在实在是头疼无比,希望各位大虾能帮我解决这个困难
 
select * from jb where 日期='09/01/01/'
 
用select * from jb where 日期='09/01/01/'
依然不行
 
我想你最好全用英文吧,不要夹些中文在SQl中,很麻烦的!
 
这个jb库是另外一个软件中的
 
请使用带参数形式的格式写sql
with query1 do
begin
close;
sql.clear;
sql.add(select * from jb where 日期=:vrq);
parameters.parambyname('vrq').value:=某日期变量
open;
end;
 
select * from jb where 日期='01-09-01'/'
 
你试一下这个,我都是这样查的:
select * from jb where 日期<cast( '01/09/2001' as date)
要注意Local SQL只支持US的日期格式,即'mm/dd/yy'格式的日期。
 
dawn7、zh_2001:你们的解答很彻底,我还有个这么面的问题想请教各位高手
对于日期查询中的用like 模糊查询怎么办

select * from jb where 日期 like 后面怎么写?

对于对日期查询中如:我要查5月份生日的人怎么办?
 
呵呵,我没有这样做过,不过你可以先生成一个临时表,在这个表中生成一个出生月份的字段
,然后再在这个表中查询,太笨了,供参考:
select 姓名,EXTRACT(month FROM 出生日期) AS 出生月份 from jb
假设生成一个名为aa的临时表,则
select * from aa where 出生月份='5'
如果你找到日期字段的直接 like查询 的方法,请给我说一下。多交流!


 
xinjia兄的解答可以解决问题,但是我还有一点不明白的是
为什么
select * from jb where 日期<{^2001/09/01}
这句话在dbd32里面的sql查询可以用,但在自己的程序里面为什么用不了
是不是^或者{这两个符号属于delphi或者dbe的保留字符
dawn7,zh2001两位的方法我也试过了,
用dawn7的方法它提示无法识别cast
而用zh2001的方法则提示操作符类型不匹配
 
dawn7:首先谢谢你
用你的方法生成临时表的思想是可行的
但是我对"出生月份"到底为什么类型弄不清楚
create table birthday(date1 date,address char(30),
month1 integer); 我试了用integer,smallint,char都不行
insert into birthday(date1,address,month1)
select date1,address,extract(month from date1) AS 年份
from pdata
 
海天兄:我去查了一下extract函数,它分离后的字段是N型,所以再不用那么麻烦了,下
面的方法我已通过了,给你参考一下:
查5月份生日的人:
select * from jb where EXTRACT(MONTH FROM 出生日期)=5
Bitman兄:zh2001和我的方法应该都可以啊,我觉得如果不考虑多次查询的话,直接用
CAST进行数据类型转换是最简单的,你是用的什么环境啊?

 
我用的是d5+win98
不知道哪儿不对,我在书上也看到可以用cast进行类型指定
到不知道为什么用不了
 
当且仅当你的数据库支持cast函数才能用!
delphi本身是不支持的。
 
多人接受答案了。
 
后退
顶部