Instead of having a CASE statement in JOIN that will prevent queries using indexes, you might consider using UNION
SELECT [dbo].tableB.theColumnINeed
FROM [dbo].tableA
LEFT OUTER JOIN [dbo].tableB
ON [dbo].tableA.myDateColumn > '1/1/2009'
AND [dbo].tableA.myColumn = FormatColumnOneWay([dbo].tableB.myColumn)
UNION ALL
SELECT [dbo].tableB.theColumnINeed
FROM [dbo].tableA
LEFT OUTER JOIN [dbo].tableB
ON [dbo].tableA.myDateColumn <= '1/1/2009'
AND [dbo].tableA.myColumn = FormatColumnAnotherWay([dbo].tableB.myColumn)
FormatColumnOneWay/FormatColumnAnotherWay - , , , inxdexes [myColumn], myDateColumn
, FormatColumnOneWay/FormatColumnAnotherWay, ,
:
UNION ALL ( UNION). , SORT, UNION , .
"1/1/2009" , "yyyymmdd" ( CONVERT , , d/m/y m/d/y style