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

SQL查询中如何将指定格式的数值转换为DateTime数据类型?

数值转DateTime的SQL实现方法

针对输入数值18300031121994(格式为%H%M%S%d%m%Y)转换为1994-12-31 18:30:00.000的需求,不同SQL数据库的实现方法如下:

SQL Server

通过拆分字符串并拼接为标准日期格式,再转换为DateTime类型:

DECLARE @inputNum BIGINT = 18300031121994;
DECLARE @inputStr VARCHAR(14) = CAST(@inputNum AS VARCHAR(14));

SELECT CONVERT(DATETIME, 
    RIGHT(@inputStr, 4) + '-' + SUBSTRING(@inputStr, 9, 2) + '-' + SUBSTRING(@inputStr, 7, 2) + ' ' +
    LEFT(@inputStr, 2) + ':' + SUBSTRING(@inputStr, 3, 2) + ':' + SUBSTRING(@inputStr, 5, 2)
) AS ConvertedDateTime;

执行后将返回1994-12-31 18:30:00.000。

MySQL

利用STR_TO_DATE函数直接按指定格式解析字符串,如需保留毫秒可转换为DATETIME(3):

-- 基础转换
SELECT STR_TO_DATE(CAST(18300031121994 AS CHAR), '%H%i%s%d%m%Y') AS ConvertedDateTime;

-- 带毫秒的格式
SELECT CAST(STR_TO_DATE(CAST(18300031121994 AS CHAR), '%H%i%s%d%m%Y') AS DATETIME(3)) AS ConvertedDateTime;

第二条语句输出结果为1994-12-31 18:30:00.000。

Oracle

使用TO_DATE或TO_TIMESTAMP函数解析格式,其中TO_TIMESTAMP会包含毫秒部分:

-- 转换为DATE类型
SELECT TO_DATE(TO_CHAR(18300031121994), 'HH24MISDDMMYYYY') AS ConvertedDateTime FROM DUAL;

-- 转换为带毫秒的TIMESTAMP类型
SELECT TO_TIMESTAMP(TO_CHAR(18300031121994), 'HH24MISDDMMYYYY') AS ConvertedDateTime FROM DUAL;

第二条语句返回1994-12-31 18:30:00.000000000,满足毫秒显示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:50:21