一个着急的问题:查询关于时间范围的[^](10分)

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

daisyrose

Unregistered / Unconfirmed
GUEST, unregistred user!
已知一个日期DA(以字符串形式,在DELPHI中定义的),要查找并取出表ABC(SQL数据库中的,已经被打开)中
所有时间在DA的中午12点之前和DA的前一天的12点之后的数据(表ABC中的时间字段是DATETIME类型),哪位大侠帮帮忙,我已经被弄晕了
 
Select * From ABC Where (DTF>:da1)And(DTF<:DA2)
 
不对吧,你的DA1和DA2是怎样啊我的DA是用户输入的,格式是'12 31 2001'
时间字段是DATETIME内容怎样确定DA1和DA2啊
 
>>我的DA是用户输入的
用什么输入的?DateTimepicker?
adoquery1.Parameters.ParamByName('da1').Value := DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('da2').Value := DateTimePicker2.DateTime;
 
我的DA是通过TEDIT输入的也,另外我也没用到ADOQUERY控件,只用了ADOCONNECT和ADODATASET
 
你应先定义一时间变量(t),在将DA通过函数转成时间类型赋值于t中:t:=strtodate(DA)
在使用以下语句:
query1.close;
query1.sql.clear;
query1.sql.add('select * from ABC where 日期>='+quotedstr(datetostr(t))+'and 日期<='
+quotedstr(datetostr(t-1)));
query1.prepare;
query1.oopen;
应当可以吧
 
DA中是不包含钟点信息的,我怎样才能将12点这个信息赋入以及将昨天也表示出来呢
 
t:=strtodate(DA)过后为什么查T的值是0呀?我跟踪到DA是2001-09-2
 
将钟点信息转成小数在将其与日期信息相加,得到t
 
DateTimeToStr(StrToDate('2002-4-2')+0.5);//今天12点
DateTimeToStr(StrToDate('2002-4-2')-0.5);//昨天12点
 
to lgxing:不好意思我搞错了应该是上午10点,那是不是应该加上0.4啊?
t:=strtodate(DA)执行过后为什么查T的值是0呀?我跟踪到DA是2001-09-2
 
我同意LGXing的做法
 
StrToDate('2002-4-2')+5/12;//今天10点
StrToDate('2002-4-2')-7/12;//昨天10点
为什么t=0,不清楚,一般0为1899-12-30
 
怎么办,我还是调不通,主要问题是两个:
1)t:=strtodate(DA)执行过后查T的值是0,其中DA肯定不为零,是规范的字符串
这可能是什么原因造成的呢?
2)要查找并取出表ABC(SQL数据库中的,已经被打开)中所有时间在DA的中午10点
之前和DA的前一天的10点之后的数据,由于还有其他事件,我是按照序号顺序将表中
的每一个时间字段用SQL语句取出并比较他与DA的要求,对于符合条件的再取出所需要的
字段,问题在于:DATETIME类型的时间数据是被ASSTRING取出的,所以我怎样将它与D1D2
比较啊?我试了好几次一直没有办法解决,总是通不过
 
1、设置ShortDateFormat,然后使用这个StrToDateTime,这样好一些。
2、转换成日期类型。

以上两个是通用方法,针对特殊数据库,还可以使用数据库的转换函数,如Oracle的to_Date和to_Char
 
后退
顶部