str_to_date mysql 在 hsql 中不 运行
str_to_date mysql does not run in hsql
我的代码在给定时间在我的 mysql 数据库中执行以下更新:
" UPDATE client_registration " +
" SET registration_date = NOW() " +
" WHERE cycle <= str_to_date(\"" + now + "\",'%d/%m/%Y %H:%i') ";
但是我有一个单元测试试图在 HSQL 数据库上执行此更新并且我收到以下错误消息:user lacks privilege or object not found: STR_TO_DATE
.
mysql 数据库和 hsql 数据库执行条件 WHERE cycle_start <= str_to_date(\"" + now + "\",'%d/%m/%Y %H:%i')
的一些方法?
您必须为 HSQL 重新编写查询:
" UPDATE client_registration " +
" SET registration_date = NOW() " +
" WHERE cycle <= current_timestamp";
How to do "select current_timestamp" in hsqldb?
如果您想 运行 在 MySQL 和 HSQLDB 上执行完全相同的查询,您需要在 H[=24 上创建 STR_TO_DATE 函数=]数据库。您还需要在查询中使用单引号字符:str_to_date('" + now + "','%d/%m/%Y %H:%i')
(此引用遵循 SQL 标准)。
如果您对 'now' 变量和格式使用 SQL 标准格式 'YYYY-MM-DD hh:mm:ss'(例如“2020-07-21 14:30:00”),会更容易与 MySQL 一起使用的字符串。在这种情况下,HSQLDB 函数被简单地创建为:
CREATE FUNCTION STR_TO_DATE(STR VARCHAR(30), FORMAT VARCHAR(40) )
RETURNS TIMESTAMP
RETURN CAST(STR AS TIMESTAMP);
连接到数据库时执行一次 CREATE FUNCTION 语句,您可以在所有查询和更新语句中使用它。
我的代码在给定时间在我的 mysql 数据库中执行以下更新:
" UPDATE client_registration " +
" SET registration_date = NOW() " +
" WHERE cycle <= str_to_date(\"" + now + "\",'%d/%m/%Y %H:%i') ";
但是我有一个单元测试试图在 HSQL 数据库上执行此更新并且我收到以下错误消息:user lacks privilege or object not found: STR_TO_DATE
.
mysql 数据库和 hsql 数据库执行条件 WHERE cycle_start <= str_to_date(\"" + now + "\",'%d/%m/%Y %H:%i')
的一些方法?
您必须为 HSQL 重新编写查询:
" UPDATE client_registration " +
" SET registration_date = NOW() " +
" WHERE cycle <= current_timestamp";
How to do "select current_timestamp" in hsqldb?
如果您想 运行 在 MySQL 和 HSQLDB 上执行完全相同的查询,您需要在 H[=24 上创建 STR_TO_DATE 函数=]数据库。您还需要在查询中使用单引号字符:str_to_date('" + now + "','%d/%m/%Y %H:%i')
(此引用遵循 SQL 标准)。
如果您对 'now' 变量和格式使用 SQL 标准格式 'YYYY-MM-DD hh:mm:ss'(例如“2020-07-21 14:30:00”),会更容易与 MySQL 一起使用的字符串。在这种情况下,HSQLDB 函数被简单地创建为:
CREATE FUNCTION STR_TO_DATE(STR VARCHAR(30), FORMAT VARCHAR(40) )
RETURNS TIMESTAMP
RETURN CAST(STR AS TIMESTAMP);
连接到数据库时执行一次 CREATE FUNCTION 语句,您可以在所有查询和更新语句中使用它。