queries with db_select don't respect integers
Drupal doesn't alter the arguments you give it (apart from expanding arrays), but because they're passed directly to PDOStatement::execute, in which


  All values are treated as PDO::PARAM_STR.


the quotes are inevitably added.

Assuming a recent-ish version of MySQL you can try disabling prepared statement emulation to let MySQL sort them out instead. In settings.php:

$databases['default']['default'] = array(
  'driver' =&gt; 'mysql',
  'database' =&gt; 'drupaldb',
  'username' =&gt; 'username',
  'password' =&gt; 'secret',
  'host' =&gt; 'dbserver1',
  'pdo' =&gt; array(PDO::ATTR_EMULATE_PREPARES =&gt; FALSE),
);