用ADOQuery怎样查询某日期范围的内容?谢谢谢谢
用ADOQuery怎样查询某日期范围的内容?谢谢谢谢!!!
例如查询 2006-12-31 00:00:00 到 2007-2-3 23:59:59表中所有的内容
注时间是表中的一个字段
Sql语句怎样写,另表中的字段是什么类型的(用的是ACCESS数据库)
[解决办法]
ADOQuery1-> SQL-> Text= "select * from 表名 where 日期时间型字段名称 between CDate( '2006-12-31 00:00:00 ') and CDate( '2007-2-3 23:59:59 ') ";
[解决办法]
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();
ADOQuery1-> SQL-> Add( "SELECT * FROM HISTORY WHERE RIQI > =:TIMESTR AND RIQI <= :TIMEEND ");
ADOQuery1-> Parameters-> ParamByName( "TIMESTR ")-> Value=DateTimePicker1-> DateTime;
ADOQuery1-> Parameters-> ParamByName( "TIMEEND ")-> Value=DateTimePicker2-> DateTime;
ADOQuery1-> Active=true
[解决办法]
select * from Table where Date> = 'BeginDate ' and Date <= 'EndDate '
[解决办法]
同意上楼
select * from Table where Date> = '2006-12-31 00:00:00 ' and Date <= '2007-2-3 23:59:59 '
表中当然是datetime啦
[解决办法]
借宝地一问,好象以前我也问过。
是否各种数据库的SQL查询中对于日期的比较都是字符串的比较?
如果系统的日期格式有变化会对程序中取得的字符串有影响(如日文操作系统)。
如何做才能避免这种影响呢?
一种是修改系统的日期格式,但不符合客户要求。
第二种就是要使取得的固定的日期格式,但这样是不是很麻烦?首先要考虑数据库内的日期格式,然后考虑日期控件的日期格式。大家都是如何做到的?
谢谢!
[解决办法]
ACCESS数据库使用动态SQL语句中用日期时间是有点特殊的
【select * from Table where Date> = '2006-12-31 00:00:00 ' and Date <= '2007-2-3 23:59:59 '】
会出错。
theDateField是日期字段
String sql;
sql= "select * from theTable\r\n "
"where (theDateField> =#2006-12-31 00::00::00#) \r\n "
"and (theDateField <=#2007-2-3 23::59::59#) ";
ADOQuery1-> SQL-> Clear(); ShowMessage(sql);
ADOQuery1-> SQL-> Add(sql);
ADOQuery1-> Open();
[解决办法]
如果系统的日期格式有变化会对程序中取得的字符串有影响(如日文操作系统)。
如何做才能避免这种影响呢?
---------------------------
1.字段采用浮点型,要查的时候,日期当成浮点型查找.
2.规定程序的日期格式,而不是修改系统的日期格式.
ShortTimeFormat = "hh:nn:ss ";
LongTimeFormat = "hh:nn:ss ";
DateSeparator = "- ";
LongDateFormat = "yyyy-mm-dd ";
ShortDateFormat = "yyyy-mm-dd ";
这几个都是SysUtils定义的全局变量来的,自己规定好自己需要的格式就行了.这样你的程序里面采用的日期时间格式将按照这个来显示,存到数据库也一样.这样就不会有差异了.
另还有其他全局变量,自己看吧.
[解决办法]
不好意思上面写错了.
DateSeparator= '- ';应该是这样,他是char来的
[解决办法]
对于搂主这个问题,个人认同daydayup234(关中刀客)的答案,access要用#DataTime#这样的形式的,当然说的也是正规的DataTime字段,如果采用浮点型,那么直接按照查浮点型的,速度快.
[解决办法]
gingerj(枸杞子) 說的, 用參數查詢,可以避免不同系統的日期格式問題。