sql - 您如何编写将当前时间戳减去 30 分钟的 CASE?
问题描述
我正在尝试编写一个用“是”或“否”替换最新时间戳的案例,具体取决于它是否在过去 30 分钟(或最后一小时)内。
我目前有以下内容,它适用于当前时间戳,但我想将当前时间向后退 30 分钟。
CASE
WHEN max(timestamp) > (CURRENT_TIMESTAMP) THEN 'Yes'
WHEN max(timestamp) < (CURRENT_TIMESTAMP) THEN 'No'
END
据我了解它CURRENT_TIMESTAMP
是 Unix,所以我尝试从中减去一个数字,但没有奏效;
CURRENT_TIMESTAMP - 0.00833
我收到以下错误;
No operator matches the given name and argument types. You might need to add explicit type casts.
我也尝试过使用ADDDATE(mi,-30,CURRENT_TIMESTAMP)
,(CURRENT_TIMESTAMP - (max(timestamp)))
但没有让其中任何一个工作。
任何帮助将非常感激。
解决方案
在标准 SQL 中,这看起来像:
(CASE WHEN MAX(timestamp) > CURRENT_TIMESTAMP - INTERVAL '30 MINUTE'
THEN 'Yes' ELSE 'NO'
END)
但是,数据库之间的日期/时间函数差异很大,因此确切的语法取决于您使用的数据库。
(注意:上述逻辑会调整您的逻辑,因此时间戳完全匹配 - 30 分钟返回NO
而不是NULL
。)
推荐阅读
- opencv - AttributeError:模块'cv2.cv2'没有属性'face'
- c# - 如何解决 Prism + DryIoC 中的依赖关系
- reactjs - 在 ReactJS 中将新文件上传到谷歌驱动器
- javascript - 在反应中动态更改引导进度条值
- android - 嵌套滚动视图中的recyclerview加载缓慢
- php - 无法将输入时间格式转换为 mysql 识别的格式
- python - CSV 到 JSON,带有 Python 的子列表数组
- postgresql - 在 Debian 8.6 Jessie 上启动 PostgreSQL 11 的 Docker 构建权限问题
- c# - 如何创建一组唯一的随机数?
- linux - 在linux perl中从任何编码到utf-8的文件编码