将nvarchar转换为datetime

Uma*_*ant 2 sql sql-server datetime date sql-server-2012

我们有一个包含数据类型列的表nvarchar(254).此列按以下格式存储日期和时间:

12-MAR-15 04.07.36.000000000 PM
Run Code Online (Sandbox Code Playgroud)

我们需要将其转换为datetime格式,以便我们可以运行时间相关的查询来提取所需的结果.此数据不以CAST和CONVERT文档页面中提到的任何格式存储

我试着用130131,但没有运气.

这里的格式似乎是 dd-mon-yy hh.mm.ss.mmmmmmm PM

有谁知道我们应该如何将其转换为'datetime'格式?

任何帮助将非常感激.

Kaf*_*Kaf 5

首先,将日期存储为字符串是一个坏主意. 这是使用STUFFREPLACE函数将它们转换回日期时间的一种方法.

我假设你的所有日期都在2000年之后.

declare @d nvarchar(256) = '12-MAR-15 04.07.36.000000000 PM'

SELECT CONVERT(DATETIME, 
        STUFF(
         REPLACE(REPLACE(
          STUFF(@d, 23, 7, ''), '-',' '),'.',':'), 8,0,'20')  )
Run Code Online (Sandbox Code Playgroud)