HSQL 和 MySQL 的区别
Difference in HSQL and MySQL
我使用 MySQL 作为我的应用程序数据库,但 HSQL 作为测试内存数据库。现在的问题是我有一个 SQL selectQuery,如下所示:
SELECT date(a.created_at) as record_date
FROM table a
现在,date() 是 MYSQL 中用于将日期时间转换为日期的函数,但在 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,测试抛出日期方法不可用的错误。
如何解决这个问题,或者有什么更好的方法可以解决这个问题?
您可以尝试 HSQLDB 和 MySQL
都支持的替代方案
SELECT CAST(a.created_at AS DATE) as record_date FROM table a
我使用 MySQL 作为我的应用程序数据库,但 HSQL 作为测试内存数据库。现在的问题是我有一个 SQL selectQuery,如下所示:
SELECT date(a.created_at) as record_date
FROM table a
现在,date() 是 MYSQL 中用于将日期时间转换为日期的函数,但在 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,测试抛出日期方法不可用的错误。
如何解决这个问题,或者有什么更好的方法可以解决这个问题?
您可以尝试 HSQLDB 和 MySQL
都支持的替代方案SELECT CAST(a.created_at AS DATE) as record_date FROM table a