in reply to SQL query using elements from array

Single quotes (q) prevent variable interpolation. $sql2 contains the literal string $date1[$i], not its value ('2013-08-01 00:00:00.000'). Tip #2 from the Basic debugging checklist (print). Try qq
my $sql2 = qq/SELECT Login_ID, AuditChrt_TimeStamp, Patient_ID FROM TopsData.dbo.AUDT_AuditChrt WHERE master.dbo.fn_sqlvarbasetostr(AuditChrt_TimeStamp) >= $d +ate1[$i] AND master.dbo.fn_sqlvarbasetostr(AuditChrt_TimeStamp) <= +$date2[$i]/;