1

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

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

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

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

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

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

4

2 回答 2

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的类型为DATEor DATETIME

于 2013-01-28T17:52:33.470 回答
0

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

于 2013-01-29T13:06:24.540 回答