数据表时间值为2023/11/15 11:21:17,怎么转换为substr(a.FEE_OCUR_TIME, 0, 16) ?
时间: 2024-10-08 11:17:13 浏览: 16
Oracle正则表达式使用介绍
在SQL中,`substr(a.FEE_OCUR_TIME, 0, 16)`通常用于从字段`a.FEE_OCUR_TIME`中提取一定长度的子串,这里的`0, 16`表示从字符串的开始位置提取16个字符。如果你想从时间戳字符串"2023/11/15 11:21:17"直接转换成这种形式,首先需要将其转换为日期时间类型的格式,比如`DATETIME`或`TIMESTAMP`,然后再提取前16位(通常是日期部分加上时间的分和秒)。
如果你的数据源已经是字符串格式,你可以先使用`STR_TO_DATE()`函数转换,然后通过`CONCAT()`或`SUBSTRING()`函数组合提取所需的日期部分。例如,在MySQL中:
```sql
SET @input_time = '2023/11/15 11:21:17';
-- 将字符串转换为日期时间类型
SET @datetime = STR_TO_DATE(@input_time, '%Y/%m/%d %H:%i:%s');
-- 提取前16位(如果是日期加时间)
SET @formatted_time = CONCAT(
SUBSTRING(@datetime, 1, 10), '--', -- 日期部分
LPAD(SUBSTRING(@datetime, 11, 8), 8, '0'), -- 时间部分补足到8位
);
SELECT @formatted_time; -- 输出结果
```
这里假设你想要的时间格式是"YYYY-MM-DD HH:MM:SS",所以只保留了前16位。
阅读全文