sql - 将多列与postgresql中的单个值进行比较
问题描述
下面是我的表结构
ID DATE1 DATE2 DATE3
1 2018-05-01 2018-05-01 2018-11-11
2 2018-05-01 2018-10-01 2018-05-01
3 2018-05-01 2018-05-01 2018-05-01
这里实际上我想选择三个日期中的任何一个都大于 now() 的记录
像 -(DATE1, DATE2, DATE3) > NOW()::DATE
谁能让我知道我怎样才能在 where 子句中实现这一点而不是像这样写
SELECT *
FROM table1
where DATE1 > NOW()::DATE
AND DATE2 > NOW()::DATE
AND DATE3 > NOW::DATE
实际上,我将所有日期列与单个值进行比较,所以只是想知道是否有任何其他有效的方法可以使用,而不是为每列添加条件。
解决方案
我会使用GREATEST()
:
SELECT t1.*
FROM table1 t1
WHERE GREATEST(date1, date2, date) > CURRENT_DATE;
我认为CURRENT_DATE
比转换更有意义NOW()
。
推荐阅读
- javascript - 单元测试 queryParams 订阅 (Angular5)
- batch-file - Bat替换逗号(,)到新行并重命名文件
- php - 获取带有签名的 YouTube 视频的下载链接
- android - 在android中编译本机代码。错误:未定义对“主要”的引用
- java - 请求超时的 Cassandra 调优
- ios - .podspec 文件的安装后挂钩
- react-native - 使用 Jest 测试来自同一模块的两个组件
- tensorflow - 为 32 核计算机优化 TensorFlow
- apache-kafka - 我们可以只为 kafka 禁用 log4j 日志吗
- r - R图图例和来自其他表的标签颜色