Oracle中如何从VARCHAR(16 CHAR)类型列提取时间部分
提取VARCHAR类型时间列中的时间部分
针对你的需求——从VARCHAR(16 CHAR)类型的HIT_TIME列(示例值:01/01/2022 21:52)中提取时间部分,以下是不同数据库环境下的实现方案:
MySQL/MariaDB
方法1:使用SUBSTRING_INDEX
利用空格作为分隔符,取分割后的最后一段内容:
SELECT SUBSTRING_INDEX(HIT_TIME, ' ', -1) AS hit_time_only FROM your_table;
方法2:使用RIGHT
由于字符串长度固定为16,时间部分占最后5位,直接截取右侧5个字符:
SELECT RIGHT(HIT_TIME, 5) AS hit_time_only FROM your_table;
Oracle
方法1:SUBSTR + INSTR
定位空格位置后,截取后续内容:
SELECT SUBSTR(HIT_TIME, INSTR(HIT_TIME, ' ') + 1) AS hit_time_only FROM your_table;
方法2:固定位置截取
已知时间部分从第12位开始,直接截取:
SELECT SUBSTR(HIT_TIME, 12) AS hit_time_only FROM your_table;
SQL Server
方法1:SUBSTRING + CHARINDEX
找到空格位置后截取时间部分:
SELECT SUBSTRING(HIT_TIME, CHARINDEX(' ', HIT_TIME) + 1, 5) AS hit_time_only FROM your_table;
方法2:使用RIGHT
同样利用固定长度截取右侧5位:
SELECT RIGHT(HIT_TIME, 5) AS hit_time_only FROM your_table;
内容的提问来源于stack exchange,提问作者ARH
相关产品推荐
相关产品推荐

