【问题标题】:Select query in MySQL works in Workbench, but not in codeMySQL 中的选择查询在 Workbench 中有效,但在代码中无效
【发布时间】:2013-01-28 16:43:33
【问题描述】:

我必须从数据库中获取在给定日期注册的所有用户。所以,我让系统发送电子邮件。要选择用户,我使用这个:

String query="Select mail from users where registered > "+"'"+datestring+"'"+";"

where registered 是用户注册时跟踪的列,datestring 是一个字符串,存储实际日期。所以,我终于得到了这样一句话:

Select mail from users where registered > '2013-01-28';

问题是......如果我在 MySQL Workbench 中复制+粘贴该句子,它就像一个魅力。但是,在代码中,它不起作用,并且句子永远不会启动。有什么帮助吗?

如果有帮助,我使用 Grails (executeQuery(query) 方法)

【问题讨论】:

  • 调试代码中的日期字符串
  • 我有一个println("Datestring: "+datestring),它显示了预期的结果,2013-01-28。使用String datestring=date.format('yyyy-MM-dd') 检索它
  • 完全没有错误。它根本没有走得更远。我在 executeQuery() 方法之后放置了一个 println“查询启动”,并且从未调用过该 println。所以显然查询中有错误。但是如果在 MySQL Workbench 中复制+粘贴句子就可以了!
  • 您是说Select mail from users where registered > '2013-01-28'; 在代码中有效?但使用 datestring 参数在代码中无效?
  • 在 MySQL Workbench 中工作,bonCodigo

标签: mysql sql


【解决方案1】:

尝试将您的 datestring 转换为 date,例如:

String query="Select mail from users where 
    registered > CAST('"+datestring+"' as DATE);"

datetime:

String query="Select mail from users where 
    registered > CAST('"+datestring+"' as DATETIME);"

如果这些不起作用,请尝试STR_TO_DATE

String query="Select mail from users where 
    registered > STR_TO_DATE('"+datestring+"', '%Y-%m-%d');"

这假定registered 的表列的类型为DATEDATETIME

【讨论】:

    【解决方案2】:

    我最终使用了 Grails 提供的 findByRegistered 方法,而不是直接启动 SQL 查询,这样我就能够检索到我想要的内容。但我意识到我必须在 findBy.... 方法中使用对象 Date 。所以,安迪,我认为你的答案是正确的,所以我支持你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多