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

如何拆分emp表中ETIME列的日期与时间?

Oracle TIMESTAMP字段拆分日期与时间的正确SQL语句

表结构与数据示例

字段定义

ID          NUMBER       
ENAME       VARCHAR2(20) 
EDATE       DATE         
ETIME       TIMESTAMP(6) 

示例数据

IDENAMEEDATEETIME
1Kunal15-03-23
2Rohit15-03-2331-01-97 9:26:50.124000000 AM
3Sakshi15-03-2331-01-97 9:26:50.124000000 AM

问题说明

用户尝试执行以下SQL拆分ETIME字段的日期与时间,但执行失败:

SELECT DATE(etime) AS date, TIME(etime) AS time
FROM emp;

正确的SQL语句

Oracle不存在DATE()、TIME()这类通用函数,需使用Oracle原生函数实现拆分:

方法1:返回日期/时间原生类型

如果需要保留日期、时间的原生数据类型:

SELECT 
    TRUNC(ETIME) AS date_part,  -- 提取日期部分,返回DATE类型
    CAST(ETIME AS TIMESTAMP) - TRUNC(ETIME) AS time_part  -- 提取时间部分,返回INTERVAL DAY TO SECOND类型
FROM emp;

方法2:返回指定格式的字符串

如果需要返回自定义格式的字符串结果:

SELECT 
    TO_CHAR(ETIME, 'DD-MM-RR') AS date_str,  -- 匹配示例的日期格式
    TO_CHAR(ETIME, 'HH:MI:SS.FF6 AM') AS time_str  -- 保留微秒的时间格式
FROM emp;

处理空值场景

针对ETIME字段存在空值的情况(如ID=1的记录),可以用NVL处理空值:

SELECT 
    NVL(TO_CHAR(ETIME, 'DD-MM-RR'), '无日期') AS date_str,
    NVL(TO_CHAR(ETIME, 'HH:MI:SS.FF6 AM'), '无时间') AS time_str
FROM emp;

内容的提问来源于stack exchange,提问作者Kunal Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:53:12