mysql - MySQL是否缓存自定义函数的结果?
问题描述
我有以下自定义功能:
CREATE FUNCTION TIME_DIFFERENCE(
ts INT
)
RETURNS VARCHAR(16)
DETERMINISTIC
BEGIN
DECLARE result VARCHAR(16);
SELECT (CASE WHEN UNIX_TIMESTAMP() < ts THEN CONCAT_WS(' ', (CASE WHEN days > 0 THEN CONCAT(days, 'd') END), (CASE WHEN hours > 0 THEN CONCAT(hours, 'h') END), (CASE WHEN minutes > 0 THEN CONCAT(hours, 'm') END))
WHEN seconds BETWEEN 1 AND 59 THEN 'SOON'
ELSE 'LIVE' END) INTO result
FROM
(
SELECT
@diff:=ts - UNIX_TIMESTAMP(),
CAST(@days := IF(@diff / 86400 >= 1, floor(@diff / 86400), 0) AS SIGNED) as days,
CAST(@hours := IF(@diff / 3600 >= 1, floor((@diff:=@diff-@days*86400) / 3600),0) AS SIGNED) as hours,
CAST(@minutes := IF(@diff / 60 >= 1, floor((@diff:=@diff-@hours*3600) / 60),0) AS SIGNED) as minutes,
CAST(@diff - @minutes * 60 AS SIGNED) as seconds
) AS _;
RETURN result;
END;
当我在不同时间使用此功能时,我得到相同的结果。如何禁用缓存以计算函数值?
解决方案
推荐阅读
- angular - 在interactJS的结束回调函数中使用可注入服务
- android - 不能在 sqlite 中执行 Select All 语句
- sql - Hive - 将纪元时间(ms - 13 位)转换为时间戳,直到 hive sql 中的毫秒
- postgresql - 查询特定记录时从 ID=x 4000+ 响应时间的用户中选择 *?
- python - 使用 PyInstaller 时不支持 SSH 连接
- html - 复选框的Vue更改事件不起作用
- ios - IOS 无法呈现 @expo/vector-icons
- iframe - Cypress - 悬停在 iframe 内的元素上并获取悬停元素的文本
- flutter - 如何检测 GestureDetector 是否悬停在 Flutter 中?
- ms-access - 如何在 ODBC 连接字符串中指定 MDW 用户名和密码(用户级安全性)和数据库密码(共享级安全性)?