有关日期的sql(200分)

  • 主题发起人 主题发起人 nothandsome
  • 开始时间 开始时间
N

nothandsome

Unregistered / Unconfirmed
GUEST, unregistred user!
tquery.sql中写
select * from 表1 WHERE 出生日期 between #1979-1-1# and #1980-1-1#
或者写
select * from 表1 WHERE 出生日期 between 1979-1-1 and 1980-1-1
或者些
select * from 表1 WHERE 出生日期 between '1979-1-1'and '1980-1-1'
都查不出结果。
我都快急死了。(access mdb的数据库。)

 
select * from 表1 WHERE 出生日期 between convert(datetime,'1979-1-1') and convert(datetime,'1980-1-1')
 
select * from 表1 WHERE 出生日期 between 'mm/dd/yyyy' and 'mm/dd/yyyy'
Ok 用formatdatetime转,具体的看帮助
 
用参数parambyname取datetimepicker的时间
 
select * from 表1 WHERE (出生日期 >= 'yyyy/mm/dd') and (出生日期 <= 'yyyy/mm/dd')
 
谢谢各位。
但是这些方法都不成。
我在sql explorer中输入select * from 表1 where 出生日期 between #1979-1-1#
and #1980-1-1#是可以的。但是我在query1.sql中输入这个是不成的。
是不是access数据库的问题。
 
DJ的方法是可行的
 
试试select * from 表1 where 出生日期 between '#1979-1-1#' and '#1980-1-1#'
 

Query1.close;
Query1.Sql.Clear;
Query1.Sql.Add('select * from 表1 where 出生日期 between :S1 and :S2');
Prepare;
paramByname('S1').AsDateTime:=StrtoDate('mm/dd/yyyy');
paramByname('S2').AsDateTime:=StrtoDate('mm/dd/yyyy');
Query1.Open;

 
日期格式错了,试试下面一句
select * from 表1 WHERE 出生日期 between '1-1-1979'and '1-1-1980'
 
你用參數傳遞算了﹐這樣應該沒有問題的。因為只用字符串表達的話﹐又麻煩又容易出
問題﹐用日期型就不會問題了。另外﹐你是系統報錯還是查不出問題﹐若是查不出問題
便是SQL判斷錯誤。
 
你用的是.mdb数据库就应该用如下语句:
select * from 表1 WHERE 出生日期 between #1979-1-1# and #1980-1-1#
以下是我的测试(access 2000 delphi 4.0 客户服务版,只针对mdb数据库):
query1.close;
query1.sql.clear;
query1.sql.add('select * from sgz where rxsj between #1999-01-01# and #2000-01-10#');
query1.open;
 
only you 没错,
我取日期时就这么做,用参数不容易出错,
甚至可以动态选择,
eg:paramByname('S1').AsDateTime:=datetime1.date;
paramByname('S2').AsDateTime:=datetime2.date;
datetime1,2为日期时间控件。
 
d5+win2000+access:
query1.sql.text:='select * from 表1 where 日期 between '+quotedstr(startdate)+
' and '+quotedstr(enddate);//startdate,enddate是字符型的日期表达式
query1.open;//不能用query1.execsql。
 
to nothandsome:
其实你写的三句sql语句都没有错的,我用的是Ado来访问数据库,你试一试用TAdoDataSet
来试一试?
 
谢谢各位的高见。
我用ado高定了。
 
多人接受答案了。
 
后退
顶部