【发布时间】:2017-02-04 20:28:36
【问题描述】:
我想使用 oracle 查询从订单表中获取唯一的日期值。我得到了
ORA-01791: 不是 SELECTed 表达式
错误,当我尝试以下查询时
SELECT DISTINCT (TO_DATE(LAST_INSERT_TIMESTAMP, 'YYYY-MM-DD HH24:MI'))
FROM ORDER
WHERE LAST_INSERT_TIMESTAMP IS NOT NULL
ORDER BY LAST_INSERT_TIMESTAMP DESC;
【问题讨论】:
-
你确定你有一个名为 ORDER 的表吗?
-
您真的将时间戳存储为字符串吗?你不应该。
-
distinct是 NOT 一个函数。将列列表放在括号内没有意义(或区别) -
那你用错了函数。
TO_DATE将字符串转换为日期时间,因此您的表达式首先默默地将LAST_INSERT_TIMESTAMP转换为字符串,从而依赖于可能失败的当前设置。请改用TRUNC(LAST_INSERT_TIMESTAMP, 'MI')。