В настоящее время я работаю над обновлением базы данных компании, в которой на одной из таблиц CreateDt
имеет тип nvarchar(20)
и сохраняет даты следующим образом:
12 May 12
29/03/2011
9/24/2012
29/01/2001 08:51:56
Есть 17 000 строк.
Итак, я сейчас работаю над кодом, в котором я смогу преобразовать все эти даты в один формат, такой как DD-MM-YYYY
.
Однако я изо всех сил пытаюсь найти что-нибудь подходящее.
Пока я пробовал:
WITH CreateDt1
AS
(
SELECT '14 DECEMBER 12' AS CreateDt1
UNION ALL
SELECT '13/10/2005'
UNION ALL
SELECT '12/14/2012'
UNION ALL
SELECT '24/05/2002 09:28:58'
UNION ALL
SELECT '28/02/2011'
)
SELECT
CreateDt1,
CASE WHEN ISDATE(CreateDt1) = 1
THEN CAST(CreateDt1 AS datetime)
ELSE
CASE WHEN SUBSTRING(CreateDt1, 3, 1) = '/'
THEN
CASE WHEN ISDATE(SUBSTRING(CreateDt1, 4, 2) + '/' + LEFT(CreateDt1, 2) + '/' + RIGHT (CreateDt1, 4)) = 1
THEN CAST(SUBSTRING(CreateDt1, 4, 2) + '/' + LEFT(CreateDt1 , 2) + '/' + RIGHT (CreateDt1, 4) AS datetime)
END
END
END AS NewDate
FROM fct_Project;
Однако это возвращает нулевые значения для таких дат, как 29/01/2001 08:51:56
.