我将MySQL用作应用程序数据库,但将HSQL用作测试内存数据库。现在的问题是我有一个SQL selectQuery,如下所示:

SELECT date(a.created_at) as record_date
FROM table a


现在,date()是MYSQL中用于将DateTime转换为Date的函数,但是在HSQL中,相同的函数是to_date()。现在,我有一个方法将上述查询命中数据库并获取输出。

public Response dbQueryThroughJdbcTemplate(String selectQuery){
       jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response
    }


现在,我有一个测试该方法的测试方法,

@Test
public void testDbQueryThroughJdbcTemplate(){
       Response response = dbQueryThroughJdbcTemplate(selectQuery);
       TestCase.assertEquals(expected, response); // avoided the code for making expected object
}


现在,由于测试环境正在使用HSQL db,因此测试将引发错误,指出date方法不可用。

如何解决这个问题,或者有什么更好的方法来实现这一目标?

最佳答案

您可以尝试HSQLDB和MySQL都支持的替代方法

SELECT CAST(a.created_at AS DATE) as record_date FROM table a

关于java - HSQL和MySQL的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38140301/

10-12 05:18