繁体   English   中英

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"; 

如何在 hsqldb 中执行“选择 current_timestamp”?

如果要在 MySQL 和 HSQLDB 上运行完全相同的查询,则需要在 HSQLDB 上创建 STR_TO_DATE function。 您还需要在查询中使用单引号字符: str_to_date('" + now + "','%d/%m/%Y %H:%i') (此引用遵循 SQL 标准)。

如果您将 SQL 标准格式“YYYY-MM-DD hh:mm:ss”(例如“2020-07-21 14:30:00”)用于“现在”变量和使用的格式字符串,则更容易MySQL。 在这种情况下,HSQLDB function 被简单地创建为:

CREATE FUNCTION STR_TO_DATE(STR VARCHAR(30), FORMAT VARCHAR(40) ) 
 RETURNS TIMESTAMP
 RETURN CAST(STR AS TIMESTAMP);

连接到数据库时执行一次 CREATE FUNCTION 语句,您可以在所有查询和更新语句中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM