You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLPlus执行datetime差值转分钟查询返回0的问题咨询

问题原因说明

该问题完全是SQL语句编写错误导致,和SQL*Plus配置没有任何关系。

核心错误点

  • 对DATE类型字段做了多余的to_date转换,导致时分秒被截断
    如果你的modified_datetime字段本身就是DATE类型,使用to_date(a.modified_datetime, 'yyyy/mm/dd hh24:mi:ss')写法时,Oracle会先把DATE类型值按照会话默认日期格式隐式转成字符串,再按你指定的格式转成DATE。Oracle默认会话日期格式为DD-MON-RR,不包含时分秒信息,转换后所有时间的时分秒都会变成00:00:00,两个时间的差值自然为0。
  • 时间差转换公式存在语法错误
    Oracle中两个DATE类型值相减的结果单位为天,转分钟的正确写法为天数差 * 24 * 60,你的代码中差值和60之间缺少乘号,虽然乘法交换律不影响最终计算结果,但缺漏运算符属于语法问题,部分环境下可能直接报错。
  • 存在多处多余逗号的语法问题
    两个子查询的SELECT列表末尾、FROM子句的b表后面都多写了逗号,属于明显的语法错误,正常执行会直接报错,你能运行大概率是粘贴代码时误加了多余逗号。

修正后的SQL

如果确认modified_datetime是DATE类型,直接去掉多余的to_date转换即可,简化写法如下:

select
a.user_id as user_id, 
(a.modified_datetime - b.modified_datetime) * 24 * 60 as minutes
from 
(select user_id, modified_datetime from table_name where some_conditions) a,
(select user_id, modified_datetime from table_name where other_conditions) b
where a.user_id = b.user_id;

如果modified_datetime是字符串类型,需要先指定格式转成DATE,再做差值计算即可。

内容的提问来源于stack exchange,提问作者Rohan Kishibe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:57:00