title: Comparing string with SmallDateTime used to work
body: <p>I'm trying to debug an old <code>VB6</code> program at my job. It's full of bugs and hardcoded stuff.</p>
  
  <p>The program is connecting on a SQL Server 2005 database to read and write info using stored procedures.</p>
  
  <p>Since the program is still being used while I'm working on it, I made a backup of the database to test some things and restored it in my version of SQL Server 2008. Everything was working fine.</p>
  
  <p>When I came in the next morning, I got an error I didn't have the previous night even though the program wasn't used in the night.</p>
  
  <p>The problem :</p>
  
  <pre><code>"exec dbo.sp_Get_Wait_Data '" &amp; DateEx &amp; "'"
  </code></pre>
  
  <p><code>DateEx</code> is a string containing <code>"2012/06/14"</code></p>
  
  <p>The stored procedure :</p>
  
  <pre><code>[sp_Get_Wait_Data] @Datest as char(10)  
  AS 
      SELECT
          (A lot of column names here) 
      FROM
          Fiche
      LEFT JOIN 
          voyage ON fcid = vofiche
      LEFT JOIN 
          client on fcaccount = cusnov
      WHERE
          fcdate = @Datest 
          AND (void is null or (void &gt; 0 and (void &lt;&gt; 999 and               void &lt;&gt; 1000 and void &lt;&gt; 998))) 
          AND ((fcremarques NOT LIKE '%SYSANNULATION%' OR
                fcremarques IS NULL)  
          AND fcrettime IS NOT NULL)
      ORDER BY 
          FcTime, FcOrgSite, fcdessite
  </code></pre>
  
  <p>The error message : </p>
  
  <blockquote>
    <p>The conversion of a varchar data type to a smalldatetime data type resulted in an out-of-range value</p>
  </blockquote>
  
  <p>So the error is here <code>fcdate=@Datest</code> in the stored procedure. I tried adding this line in the stored procedure </p>
  
  <pre><code>SELECT convert(datetime, @Datest, 120)
  </code></pre>
  
  <p>which worked like a charm for the convertion within the query but caused a few hundred other errors within the program when other queries tried to access this variable so it is not an option.</p>
  
  <p>Any idea why this query was working perfectly yesterday and now it's giving me this error? Thanks in advance.</p>