Tom*_*Tom 13 sql oracle plsql oracle11g
我们有一个DATE列d的表.
无论日期如何,我都希望得到d列大于/低于某个值的所有行.
例如
| d |
-------------------
|2009/11/1 15:55:23|
--------------------
|2009/11/2 15:55:23|
--------------------
|2009/11/3 15:55:23|
--------------------
|2009/11/3 17:55:23|
--------------------
Run Code Online (Sandbox Code Playgroud)
例如,如果我想要在下午5点之后标记的所有记录:
select d
from my_table
where extract( hour from d ) > TO_DATE ('17:00:00','HH24:MI:SS')
Run Code Online (Sandbox Code Playgroud)
这应该只返回一条记录
|2009/11/3 17:55:23|
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是最佳方法,但我在提取函数上出错:
ORA-30076: invalid extract field for extract source
Cause: The extract source does not contain the specified extract field.
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?这个错误怎么了?提取仅适用于sysdate,就像我发现的所有示例一样?
提前致谢
exi*_*000 14
这个怎么样?
select d
from my_table
where to_char(d,'HH24') > '16';
Run Code Online (Sandbox Code Playgroud)
目前没有要测试的Oracle数据库,但我认为以下内容应该有效:
SELECT *
FROM MY_TABLE t
WHERE EXTRACT(HOUR FROM CAST(t.D AS TIMESTAMP)) > 16;
Run Code Online (Sandbox Code Playgroud)
但是我不明白为什么需要CAST,因为这个页面说HOUR是DATE中的有效字段.
分享和享受.
| 归档时间: |
|
| 查看次数: |
24773 次 |
| 最近记录: |