如何获取date类型字段中的月份,小时 (oracle)

yuwei201 2006-01-18 10:28:31
sql>select to_char(time,'DD-MM-YY HH') from qua_data;
15-01-06 06
15-01-06 07
16-01-06 08
16-01-06 10
16-01-06 12
16-01-06 02
16-01-06 04
16-01-06 06
17-01-06 02
17-01-06 04

问题:如何查找06年1月的记录?如何查找06年1月16日的记录?如何查找06年1月16日04点的记录?
数据库:oracle
...全文
800 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
boydgmx 2006-01-18
  • 打赏
  • 举报
回复
这种方式,如果在time字段上有索引,那么即便是数千万记录,也会很快
boydgmx 2006-01-18
  • 打赏
  • 举报
回复
楼上方法可行,但是对于大表而言,效率实在太低了。

SELECT COUNT(*) FROM qua_data WHERE time>=TO_DATE('20060101','YYYYMMDD') AND TIME<TO_DATE('20060201','YYYYMMDD');

SELECT COUNT(*) FROM qua_data WHERE time>=TO_DATE('20060116','YYYYMMDD') AND TIME<TO_DATE('20060117','YYYYMMDD');

SELECT COUNT(*) FROM qua_data WHERE time>=TO_DATE('2006011604','YYYYMMDDHH24') AND TIME<TO_DATE('2006011705','YYYYMMDDHH24');
bierbin 2006-01-18
  • 打赏
  • 举报
回复
select to_char(sysdate,'mm'), to_char(sysdate,'hh24') from dual;

1. select * from qua_data where to_char(sysdate,'yyyymm') = '200601'

2. select * from qua_data where to_char(sysdate,'yyyymmdd') = '20060116'

3. select * from qua_data where to_char(sysdate,'yyyymmddhh24') = '2006011604'

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧