字符串到日期转换的问题

时间:2011-08-12 11:21:28

标签: java mysql grails date groovy

我正在尝试将String格式的日期转换为sql日期,并基于该查询数据库来获取结果。 字符串格式的日期为:2011-08-11 09:16:00.0 所以我使用以下方法将其转换为sql date:

public static convertStringToSqlDate(String dateString){
    DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date parsedUtilDate = formater.parse(dateString);
    java.sql.Date sqlDate= new java.sql.Date(parsedUtilDate.getTime());
    return sqlDate;
}

结果日期为:2011-08-11

但在进行查询时我没有获得所需的输出

完整的代码是

def startDate = params. startDate
def endDate = params. endDate
def formattedTripStartDate  =Trip.convertStringToSqlDate(startDate);
def formattedTripEndDate    =Trip.convertStringToSqlDte(endDate);
def listOfContracts = Rule.findAll("FROM Rule WHERE name LIKE ? AND client_id = ? AND STR_TO_DATE(contract_begins,'%Y-%m-%d')<= ? AND STR_TO_DATE(contract_terminates,'%Y-%m-%d')>= ?",["%"+q_param+"%",clientId,formattedTripStartDate,formattedTripEndDate] )

我哪里错了?

在数据库中,contract_begins存储为:2011-08-23 00:00:00

合同域类

class Contract extends Rule {

Date    contractBegins
Date    contractTerminates
int     runningDays
Double  contractValue
Double  estimatedRevenue
Double  actualRevenue
static constraints = {
    contractBegins(nullable:true)
    contractTerminates(nullable:true)
    runningDays(nullable:true)
    contractValue(nullable:true)
    estimatedRevenue(nullable:true)
    actualRevenue(nullable:true)
}
  }

2 个答案:

答案 0 :(得分:0)

Date对象本身没有格式化,只返回日期和时间值。您可以使用字符串格式的Format支持的类格式化,如SimpleDateFormat,DateFormat等。

答案 1 :(得分:0)

为什么要使用findAll查询,而不是标准。这样的事情应该这样做:

def startDate = params.startDate
def endDate = params.endDate
def tripStartDate=Trip.convertStringToSqlDate(startDate);
def eripEndDate=Trip.convertStringToSqlDte(endDate);

def c = Contract.createCriteria()
def results = c.list {
    like("name", "%${q_param}%")
    eq("client_id", clientId) 
    ge('contract_begins', tripStartDate)
    le('contract_terminates','tripEndDate) 
}

它更干净,你不必担心SQL的样子!

深入了解http://grails.org/doc/latest/ref/Domain%20Classes/createCriteria.htmlhttp://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.4.2条件,您可以在其中找到更多信息。

还可以考虑通过将条件添加到名为查询的域类中来使代码更加出色:http://grails.org/doc/latest/ref/Domain%20Classes/namedQueries.html