关于sql的一个小问题(30分)

  • 主题发起人 主题发起人 l-s-m
  • 开始时间 开始时间
L

l-s-m

Unregistered / Unconfirmed
GUEST, unregistred user!
我建了一张表,其中有一个字段‘出生年月日’为date型,然后在数据库桌面中执行下列语句:
select * from "student.db"
where 出生年月日= 79-9-9
系统总告诉我类型表达错误,不知为何?
 
这种方法我试过,可是问题依就,请指教
 
'79-9-9'是字符串类型,不是合法的date,其实我建议使用string来代替date型数据,
要方便很多的。
 
错误:SQL SERVER 中,日期是YYYY.MM.DD.HH.MM.SS格式,没有指明
时、分、秒,则默认是00:00:00,而你在保存数据时一般有时分秒,
故不相等。应该这样:
SELECT * FROM student.db
WHERE 出生年月日>='79-9-9 ' //即零点以后
and 出生年月日<'79-9-10' //即24点以前

准行!给分吧!
 
可按日期查询时我想就不方便了。
 
在程序中这是一条动态的是sql语句,他根据输入的时间和所选的‘<’‘ >’‘ =’
的不同,动态的查询所要得结果,以上我没说明白,不好意思,请各位大虾指教。:-)
 
你把>,<=和具体日期写成动态不就得了?????
怎么写?自己写!
 
应用如下格式:'日-月(英文缩写)-年'
如:79-12-9应写成
'9-dec-79'
 
Query.Sql.Text:='select * from "student.db" where 出生年月日=:tDate';
Query.ParamByName('tDate'):=StrToDate('79-9-9');

这样应该没问题了吧
 
'1979.09.09'or'1979/09/09'
 
日期格式应为09/09/79
用str:=FormatDatetime('mm"/"dd"/"yy',strtodate(79-9-9))转换一下

select * from "student.db"
where 出生年月日= ‘str’

str必须用单引号,在程序中添加SQL 语句可这样:
SQL.Add('... where 出生年月日='+#39+str+#39);

 
l-s-m:
你这样写应该是提示类型不匹配的错误提示,如下语句是可以的:
Query.Sql.add('select * from student where 出生年月日=:BDate');
Query.ParamByName('BDate').asdatetime:=StrToDate('79-09-09');

 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部