restore database using bak file - resorting to old date?
Does your backup file contain multiple backups (known as backup sets), and are you restoring just the earliest backup set from the backup file? 

To see the backup sets in a file run the following and note the Position column, which denotes the backup set:

RESTORE HEADERONLY FROM DISK='mybackup.bak'


To restore a specific backup set from a backup:

RESTORE DATABASE ... WITH FILE = &lt;position from previous statement&gt;


Why does this happen?

If you use the same filename every time in your backup script (e.g. BACKUP DATABASE MyDb TO DISK='backup.bak'), and that file is not deleted or changed between backups, then your backup is added to the backup sets in that file. If you then run RESTORE DATABASE ... without a WITH FILE=&lt;position&gt; clause, you will always restore the first backup set in the backup media - usually your earliest one.

The details:

The RESTORE HEADERONLY command is useful for a backup file (if you are looking at it on a different server to the one it was created on). You can also see the backups on the server that created them by running the command:

SELECT backup_set_id, media_set_id, position, backup_finish_date 
FROM msdb.dbo.backupset


If you want to check which backup set you just restored from a multi-file media then you can run:

SELECT * FROM msdb.dbo.restorehistory


Note the backup_set_id which corresponds to the msdb backupset table and in turn to the media file and position within that file.

References:

From MSDN: RESTORE Arguments (Transact-SQL):


  Backup Set Options 
  
  FILE ={ backup_set_file_number | @backup_set_file_number }
  
  ...
  
  When not specified, the default is 1.