Приведите различные части varchar в дату, SQL

У меня есть varchar, который является 8-значным числом, и мне нужно преобразовать в datetime. Производственный номер - это автоматически сгенерированный номер с момента размещения заказа. Например, серийный номер 10090203 фактически является датой 2015-10-09 02:03:00. Мне нужно преобразовать список чисел varchar в дату и время, чтобы я мог сравнить его со списком времени. Вот как я конвертирую datetime в varchar, но я не уверен, как поступить наоборот.

 SELECT RIGHT('0' + CAST(DATEPART(M, table1.coldatetime) AS varchar), 2) 
+ RIGHT ('0' + Cast(DATEPART(DD, table1.coldatetime) AS varchar), 2) 
+ RIGHT('0' + CAST(DATEPART(HH, table1.coldatetime) AS varchar), 2)
+ RIGHT('0' + CAST(DATEPART(MINUTE, table1.coldatetime) AS varchar), 2)
AS 'CreatedNumber' FROM table1  

2 ответа

Решение

Это должно работать для вас:

SELECT   
    DATEADD(mi,CAST(SUBSTRING(table1.coldatetime,7,2) AS INT),DATEADD(hour,CAST(SUBSTRING(table1.coldatetime,5,2) AS INT),CONVERT(datetime,'2015' + LEFT(table1.coldatetime,2)+SUBSTRING(table1.coldatetime,3,2))))
FROM
    table1
Select 
 STR_TO_DATE(CONCAT('2015',coldatetime,'00'),'%y','%m','%d','%H','%i','%s')
From Table1
Другие вопросы по тегам