类型转换

2020 2003-11-01 05:01:31
SQL SERVER 数据库,其中DAY1为DATETIME类型,长度为8,编译时的错误为:
[Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
附:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
另一种办法:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where day1 〈 '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
错误提示依旧,问题出在哪儿?
...全文
24 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
2020 2003-11-08
  • 打赏
  • 举报
回复
非常感谢大家的帮忙!我都不好意思了,这么简单的问题,哎!
可是还是没有结果,编译没错误,按理应该有结果,数据库里面有符合条件的记录,问题出在哪呢?(pengdali(大力 V3.0) 、 ball2424(ball_2424),你们的意见也试了,也是这样)
ball2424 2003-11-07
  • 打赏
  • 举报
回复
这样写肯定行:
如果DateTimePicker1包含年,月,日,时,分,秒,这样写

Adoquery1.SQL.Clear
Adoquery1.SQL.Text:='select * form data where day1<'''+DateTimeToStr(DateTimePicker1.datetime)+'''';
Adoquery1.open;

如果只包含年,月,日,就这样写:
Adoquery1.SQL.Clear
Adoquery1.SQL.Text:='select * form data where day1<'''+DateToStr(DateTimePicker1.datetime)+'''';
Adoquery1.open;

结帖吧

pengdali 2003-11-07
  • 打赏
  • 举报
回复
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateTimeToStr(DateTimePicker1.datetime)+'''');
Adoquery1.open;


这样应该是得。或:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateToStr(DateTimePicker1.datetime)+'''');
Adoquery1.open;

试试。
2020 2003-11-06
  • 打赏
  • 举报
回复
49: Parameters[0].asstring:=datetimetostr(DateTimePicker1.datetime);

[Error] Unit1.pas(49): Undeclared identifier: 'asstring'

还不行啊,请继续帮忙
sweig0721 2003-11-06
  • 打赏
  • 举报
回复
with AdoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from data where day1<:xDate);
Parameters[0].aastring:=datatimetostr(DateTimePicker1.datetime);
Open;
end;
Shiyl 2003-11-05
  • 打赏
  • 举报
回复
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where day1 〈 '''+datetimetostr(DateTimePicker1.datetime)+'''');
Adoquery1.open;
ziqing 2003-11-05
  • 打赏
  • 举报
回复
'''+DateTimeToStr(DateTimePicker1.datetime)+'''');
2020 2003-11-05
  • 打赏
  • 举报
回复
TO ehom(?!) :
'''+DateTimeToStr(DateTimePicker1.datetime)+''' ');

编译没错误,但执行没结果,条件已符合,应该有结果得。
Shiyl 2003-11-05
  • 打赏
  • 举报
回复
ehom(?!) 兄不要动肝火啊^o^
ehom 2003-11-05
  • 打赏
  • 举报
回复
不要把Delphi中的数据类型和SQL中的混为一谈,其实这问题真的很简单

要加DateTimeToStr是为什么,因为浮点数不能和字浮串进行运算,这是常识,一定要牢记,Delphi是强类型语言中.不管怎么改这点是基础.

而''又是什么意思?这表示字符串中的'.按上面代码的意思,在SQL语句中不就是一日期和一个日期字符串比较?这能不错?
waiber 2003-11-05
  • 打赏
  • 举报
回复
试一下:

Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where day1 < '''+strToDateTime(DateTimeToStr(DateTimePicker1.datetime))+''' ');
Adoquery1.open;



//***************************************

SQL SERVER 数据库,其中DAY1为DATETIME类型,长度为8,编译时的错误为:
[Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
附:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
另一种办法:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where day1 〈 '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
错误提示依旧,问题出在哪儿?
ehom 2003-11-04
  • 打赏
  • 举报
回复
"DAY1为DATETIME,不是字符型啊?"

这有关系吗?

Incompatible types: 'String' and 'TDateTime'

可以先找本字典翻译下,这句话什么意思?

数据字段类型和解决这里的问题没有任何关系?SQL总是是一段字符串吧?

''+123.321

能正确?
gdwyh 2003-11-04
  • 打赏
  • 举报
回复
我测试过hnhb(不死鸟)的代码了,没问题呀,是不是你的ADOQUERY1的设置有问题?如果方便的话请MAIL至wangyh.gz@163.com给我看看.
2020 2003-11-03
  • 打赏
  • 举报
回复
TO gdwyh(神州大侠) :
我也加了单引号的。
我连这么简单的问题都搞不掂!我真觉得DELPHI的格式好复杂,具体算法我倒不怕,就这些小问题搞得我总不能很快上手!


TO ehom(?!) :
DAY1为DATETIME,不是字符型啊?
ehom 2003-11-03
  • 打赏
  • 举报
回复
TDateTime是双精度浮点数

用DateTimeToStr类型转换
gdwyh 2003-11-03
  • 打赏
  • 举报
回复
hnhb(不死鸟)的代码中第五行
SQL.Add('select * from data where day1<:xDate);
应该为
SQL.Add('select * from data where day1<:xDate');
漏了个单引号
2020 2003-11-03
  • 打赏
  • 举报
回复
TO hnhb(不死鸟):
执行结果如下:
[Error] Unit1.pas(52): Missing operator or semicolon

To txlicenhe(马可) :
Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
hnhb 2003-11-01
  • 打赏
  • 举报
回复
你这样试试:
with AdoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from data where day1<:xDate);
Parameters[0].Value:=DateTimePicker1.datetime;
Open;
end;
txlicenhe 2003-11-01
  • 打赏
  • 举报
回复
try:
Adoquery1.SQL.Clear
Adoquery1.SQL.Add('select * from data where convert(char(10),day1 ,120)〈 '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧