首页 > 解决方案 > 什么是 SQL Server 中的 Oracle to_date 函数等价物

问题描述

如何从 Oracle 转换这段代码以在 SQL Server 中获得相同的行为?

select to_date('20141008174025', 'YYYYMMDDHH24MISS') 
from dual 

标签: sql-serverstringoracledatesql-date-functions

解决方案


一种方法使用datetimefromparts()

declare @str varchar(20) = '20141008174025';
select datetimefromparts(
    substring(@str, 1, 4), 
    substring(@str, 5, 2), 
    substring(@str, 7, 2), 
    substring(@str, 9, 2),
    substring(@str, 11, 2),
    substring(@str, 13, 2),
    0
)

你也可以这样做:

declare @str varchar(20) = '20141008174025';
select cast(
    left(@str, 8) 
        + ' ' 
        + substring(@str, 9, 2) 
        + ':' 
        + substring(@str, 11, 2) 
        + ':' + substring(@str, 13, 2)
    as datetime    
)

推荐阅读