【问题标题】:Sql date variable delphisql日期变量delphi
【发布时间】:2018-08-03 15:38:20
【问题描述】:

我的 sql 有问题:

sSQL:= 'select * from tbldebit where transaction date like " '+ tdate+ ' " ' ;

Delphi 2010 不断给我缺少操作员错误。 (TDate 从日期时间选择器中获取值)

期待您的回复

问候

【问题讨论】:

  • 这是 Ruby 还是 Delphi?您的标签中有“ruby”,您可能应该有“delphi”...
  • LIKE 对字符串无效。对所有其他数据类型使用 =>=<=BETWEEN
  • TDate 是一种类型。我希望你没有一个名为 TDate 的变量。此外,您将受到 SQL 注入的影响。
  • 对我的新标签表示歉意

标签: sql delphi-2010


【解决方案1】:

我一直用:

function DateTimeToSQLDate(const ADate: TDateTime): string;
var
  MyYear, MyMonth, MyDay, MyHour, MyMinute, MySecond, MyMSecond: Word;
begin
  DecodeDateTime(ADate, MyYear, MyMonth, MyDay, MyHour, MyMinute, MySecond, MyMSecond);
  Result := Format('#%d %s %d#', [MyDay, FormatSettings.LongMonthNames[MyMonth], MyYear]);
end;

你会用这个...

sSQL:= 'select * from tbldebit where [transaction date] = ' + DateTimeToSQLDate(TDate);

【讨论】:

    【解决方案2】:

    正确代码 = sSQL: ='Select * from tbldebit where [Transaction date] like " '+ datepicked+ ' " ' ;

    字段名称必须放在方括号中,因为它们是名称中的空格。我对其进行了测试,并且“喜欢”有效。

    问候

    【讨论】:

      【解决方案3】:

      使用如下通配符:

      query = "SELECT * FROM tbldebit WHERE date LIKE '%" + tdate+ "%'";
      

      【讨论】:

      • 我试过了,但它仍然给出缺少操作员错误
      • 你想做什么?
      • 这里没有人知道您的代码中的 TDate 是什么。我们不知道您的错误,因为您解释了它。你为什么不做一些调试。检查确切的 SQL 查询。我知道你是新手,没关系。您应该为自己设定学习如何调试的目标。这是你进步的最佳方式。
      • 我正在使用 sql 进行搜索。用户从 datetimepicker 中选择一个日期,然后 sql 显示包含该日期的记录。变量 datepicked(tdate) 被赋值为 datetimepicker 的值。
      • 如果你想要记录任何特定的日期,那你为什么要在 SQL 命令中使用 Like?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多