如何用SQL查询时间字段?(50分)

  • 主题发起人 主题发起人 dabaosod
  • 开始时间 开始时间
D

dabaosod

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何用SQL查询时间格式的字段?谢谢你的帮助。
 
你可以通过使用动态SQL语句实现时间字段的查询:
Query.Close;
Query.Clear;
Query.Sql.Add('select * from tabel ');
Query.Sql.Add('Where 时间=:A');
Query.ParamByName('A').AsDatetime:=StrtoDatetime(Edit.text);
Query.Prepare;
Query.Open;
 
select * from table1 where date between date1 and data2
 
要注意时间型字段的值一般是无法精确定位的.
 
还是看我的把:
Query.Close;
Query.Clear;
Query.Sql.Add('select * from tabel ');
Query.Sql.Add('Where 时间=<font color=ff0000>#</font>2000/11/8<font color=ff0000>#</font>');//关键是<font color=ff0000>#</font>
Query.Open;
 
如是sql server数据库
var sd:string;
sd:='1999-12-31';
query.close;
query.sql.clear;
query.sql.add('select * from tabel where date>='+''''+sd+'''');
query.open;
 
wangxd
您这种用法是针对那一种数据库?
 
其实用 select * from .. where date=#2000-11-10#就可以了
具体的时间格式一定要和所用数据库匹配
 
sql server 7.0:
select * from sales where convert(varchar(30),ord_date,21) like '1993%'//某年
select * from sales where convert(varchar(30),ord_date,21) like '1993-05%'//某月
select * from sales where convert(varchar(30),ord_date,21) like '1993-05-29%'//某日
注:年、月、日必须是yyyy-mm-dd格式。
select * from sales where convert(varchar(30),ord_date,21) between '1993' and '2000'//查找两个日期之间的数据
1993换成0000就可以查找2000年(包括2000年)前的记录,将2000换成9999就可以查找1993年
(包括1993年)后的所有记录
注:年、月、日必须是yyyy-mm-dd格式。
 
时间格式一定要和所用数据库匹配!!!!!!
 
>>lirens
我这种方法适用于access数据库,其他的没试过,不知道行不行
 
在 SQL Sever 7 下不行
declare @a datetime
select @a=#2000/01/01#
select @a
-----------------------
<font color=red>Server: Msg 170, Level 15, State 1, Line 3</font>
Line 3: Incorrect syntax near '#'.
 
sql server中对时间变量赋值只要用'2000/1/1'就可以了,#符用来表示临时表。
 
不同数据库,格式肯定不一样,如oracle
 
用convert(varchar(30),ord_date,21)
 
对于用 SQL Server 的朋友,一定要注意一点。
SQL Server 的时间字段实际上是实数,如果不要求精确到时分秒,保存的时候最好先 Trunc,
否则查询很不好写,因为包含时间相当于带有小数,不好精确匹配。
 
多人接受答案了。
 
后退
顶部