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
相关产品推荐
相关产品推荐

