Вы можете использовать одно из приведенных ниже выражений, чтобы сделать JOIN
(не говоря, что это довольно красиво).Однако, согласно комментариям, которые я сделал по этому вопросу, ни один из них не будет работать хорошо.
SELECT *
FROM (VALUES(CONVERT(numeric,'201901010000'))) N(Dt)
JOIN (VALUES(CONVERT(datetime,'2019-01-01T00:00:00'))) D(dt) ON CONVERT(datetime,STUFF(STUFF(STUFF(STUFF(CONVERT(varchar(12),N.dt),11,0,':'),9,0,'T'),7,0,'-'),5,0,'-') + ':00.000') = D.Dt;
SELECT *
FROM (VALUES(CONVERT(numeric,'201901010000'))) N(Dt)
JOIN (VALUES(CONVERT(datetime,'2019-01-01T00:00:00'))) D(dt) ON N.Dt = CONVERT(numeric,LEFT(REPLACE(REPLACE(REPLACE(CONVERT(varchar(20),CONVERT(datetime,D.Dt),126),'-',''),'T',''),':',''),12));
Если вы не можете изменить тип данных одного из столбцов (т.е. через вычисляемый столбец), есть .littleВы можете сделать с производительностью, как запрос в non-SARGable.