DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: qiaoguoqiang
今日帖子: 0
在线用户: 7
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 mkz (mkz) ★☆☆☆☆ -
盒子活跃会员
2003/9/14 1:50:34
标题:
TQuery中使用SQL语句查询日期字段,帮帮我 浏览:2669
加入我的收藏
楼主: 我这样写:
select * from xkz where cast(受理日期 as char(10))="2003-9-1"
没有错误,但是查询不到数据;

select * from xkz where 受理日期="2003-9-1"
错误是:type mismatch in expression

如果使用extract子句,可以查到数据,但是不能满足日期比较,例如2003-1-1到2003-9-1

我愁~
各位帮帮我,在下非常感谢
----------------------------------------------
-
作者:
男 xianyu (咸鱼) ★☆☆☆☆ -
普通会员
2003/9/14 8:09:08
1楼: 好像可以吧·~~~~~~~

select * from xkz where 受理日期='2003-9-1'

引号不能用多引号啊。

按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
----------------------------------------------
还是咸的有味
作者:
男 mkz (mkz) ★☆☆☆☆ -
盒子活跃会员
2003/9/14 9:43:51
2楼: 1楼的兄弟,这样写还是type mismatch in expression错误按此在新窗口浏览图片
----------------------------------------------
-
作者:
男 haolix (hao) ★☆☆☆☆ -
盒子活跃会员
2003/9/14 12:12:21
3楼: select * from xkz where 受理日期= #2003-9-1# Access 2000中
其他地方用
select * from xkz where 受理日期= :D
query1.paramByname('D').paramtype := PTInput;
query1.paramByname('D').datatype := ftDateTime;
query1.paramByname('D').value := '2003-9-1';


----------------------------------------------
-
作者:
男 xianyu (咸鱼) ★☆☆☆☆ -
普通会员
2003/9/14 12:28:48
3楼: 不好意思了我忘了在Delphi中写代码了,只在SQl中试了一下哦。。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DB, DBTables, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Database1: TDatabase;
    DataSource1: TDataSource;
    Query1: TQuery;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  with query1 do
  begin
     close;
     sql.Clear;
     sql.Add('select * from xkz where 受理日期=:p0');
     parambyname('p0').Value:='2003-9-1';
     open;
  end;
end;

end.

这样应该可以了吧。
----------------------------------------------
还是咸的有味
作者:
男 namelysweet (就是甜) ★☆☆☆☆ -
盒子活跃会员
2003/9/14 16:57:07
4楼: procedure TForm1.Button1Click(Sender: TObject);
begin
  With ADOQuery1 do
    begin
      Close;
      Sql.Clear;
      Sql.Add('Select * from HIPS_TAB_USER Where HIPS_FLD_TIME=:P0');
      Parameters.ParamByName('P0').Value:='2003-9-6 22:00:01';
      Open;


    end;

end;
----------------------------------------------
-
作者:
男 lypjxnet (ok) ★☆☆☆☆ -
普通会员
2003/9/14 17:41:31
5楼: select * from xkz where cast(受理日期 as varchar(10))='2003-9-6'
不能用char一定要用varchar才行.
----------------------------------------------
李翼鹏
作者:
男 mkz (mkz) ★☆☆☆☆ -
盒子活跃会员
2003/9/15 0:54:38
6楼: 按照3楼的成功了,多谢各位
5楼的弟兄varchar同样是type mismatch in experssion错误,
我记得mysql中char和varchar的区别在于varchar根据数据长度来决定占用多少空间,
而char是固定的,char(10)固定占用10byte,varchar(10)则根据数据长度,如果只有1byte,实际存储的就是1byte

各位请指正
----------------------------------------------
-
作者:
男 y_rongfei (阿飞) ★☆☆☆☆ -
普通会员
2003/9/15 12:44:49
7楼: 请用SQL语句中的:Between...And查询
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行69.82422毫秒 RSS