簡體   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