insert into插入时间的问题,实在不行了

lmjloavcj 2009-10-26 07:16:54
为了方便,所有字段全采用文本字段,
riqi:=formatdatetime('dddddd',now);

yuefen:=formatdatetime('mm',now);

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into qq(月份,时间,姓名,服务项目,金额) values (');
ADOQUERY1.SQL.Add(yuefen+',');
ADOQUERY1.SQL.Add(riqi+',');
ADOQUERY1.SQL.Add(combobox2.Text+',');
ADOQUERY1.SQL.Add(edit2.Text+',');
ADOQUERY1.SQL.Add(edit3.Text+');');

adoquery1.ExecSQL;

这时候出现“语法错误,操作符丢失....”
riqi:=formatdatetime('yyyy/mm/dd',now);

yuefen:=formatdatetime('mm',now);

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into qq(月份,时间,姓名,服务项目,金额) values (');
ADOQUERY1.SQL.Add(yuefen+',');
ADOQUERY1.SQL.Add(riqi+',');
ADOQUERY1.SQL.Add(combobox2.Text+',');
ADOQUERY1.SQL.Add(edit2.Text+',');
ADOQUERY1.SQL.Add(edit3.Text+');');

adoquery1.ExecSQL;
这时候倒是能插入,但本应是2009-10-26这样的数据,却变成了1973
...全文
571 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
7年 2009-10-27
  • 打赏
  • 举报
回复
感觉阿三的不错。
suuuu 2009-10-27
  • 打赏
  • 举报
回复
还是写清楚点吧
adoquery1.Close; 
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from qq');
adoquery1.open;
adoquery1.append;
adoquery1.fieldbyname('月份').asstring:=yuefen;
adoquery1.fieldbyname('时间').asstring:=riqi;
adoquery1.fieldbyname('姓名').asstring:=combobox2.Text;
adoquery1.fieldbyname('服务项目').asstring:=edit2.Text;
adoquery1.fieldbyname('金额').asstring:=edit3.Text;
adoquery1.post;
suuuu 2009-10-27
  • 打赏
  • 举报
回复
riqi:=formatdatetime('dddddd',now); 
要得到时间不是这样的吧。
要得到你想要的那种格式该是这样:
riqi:=formatdatetime('yyyy-mm-dd',now);

然后插入过程在程序中还是建议你用
adoquery1.append;
.......
adoquery1.post;

这样都比较清楚一点。
kaikai_kk 2009-10-27
  • 打赏
  • 举报
回复
riqi:=Quotedstr(formatdatetime('yyyy-mm-dd',now));
yuefen:=Quotedstr(formatdatetime('mm',now));

with adoquery1 do
begin
close;
sql.text:='insert into qq(月份,时间,姓名,服务项目,金额) values ('
+yuefen+','+riqi+','+Quotedstr(combobox2.Text)+','
+Quotedstr(edit2.Text)+','+Quotedstr(edit3.Text)+')';
ExecSQL;
end;
liosten 2009-10-27
  • 打赏
  • 举报
回复
学习了
还是推荐10楼的,这样的程序更清晰
理查德他哥 2009-10-27
  • 打赏
  • 举报
回复
七楼的方法可以,比较省事。
Yizero 2009-10-27
  • 打赏
  • 举报
回复
楼主自己检查一下SQL语句,语句没问题的话试试把AdoQuery的ParamCheck属性设为False!
风之谷 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dinoalex 的回复:]
'insert into table (inputdate) values (Getdate())'
[/Quote]
--------------
定啊
dinoalex 2009-10-26
  • 打赏
  • 举报
回复
'insert into table (inputdate) values (Getdate())'
阿三 2009-10-26
  • 打赏
  • 举报
回复
用参数绑定的方式,别拼字符串了。
with adoquery do
begin
sql.text := 'insert into t values(:a)';
parameters.parambyname('a').value := strtodate(formatdatetime('yyyy-mm-dd',now()));
execsql;
end;
haitao 2009-10-26
  • 打赏
  • 举报
回复
【但本应是2009-10-26这样的数据,却变成了1973】
2009-10-26=1973
应该使用quotedstr(日期字符串)
黄山雪松 2009-10-26
  • 打赏
  • 举报
回复

quotedstr 给字符串两边加单引号
或 char(39)+yuefen+char(39)
或 ''+yuefen+''
火龙岛主 2009-10-26
  • 打赏
  • 举报
回复
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into qq(月份,时间,姓名,服务项目,金额) values (');
ADOQUERY1.SQL.Add(quotedstr(yuefen)+',');
ADOQUERY1.SQL.Add(quotedstr(riqi)+',');
ADOQUERY1.SQL.Add(quotedstr(combobox2.Text)+',');
ADOQUERY1.SQL.Add(quotedstr(edit2.Text)+',');
ADOQUERY1.SQL.Add(edit3.Text+')');

adoquery1.ExecSQL;

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into qq(月份,时间,姓名,服务项目,金额) values (');
ADOQUERY1.SQL.Add(yuefen+',');
ADOQUERY1.SQL.Add(quotedstr(riqi)+',');
ADOQUERY1.SQL.Add(quotedstr(combobox2.Tex)t+',');
ADOQUERY1.SQL.Add(quotedstr(edit2.Text)+',');
ADOQUERY1.SQL.Add(edit3.Text+')');

adoquery1.ExecSQL;
lmjloavcj 2009-10-26
  • 打赏
  • 举报
回复
不懂,要怎么写
dinoalex 2009-10-26
  • 打赏
  • 举报
回复
即然是NOW,为什么不用数据库的里NOW?

2,498

社区成员

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

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