Change database column type in hook_update_N
In basic terms you just need to call db_change_field() in your update function, with the spec for the new field:

function MYMOUDLE_update_7001(&amp;$sandbox) {
  // Create the definition for the field
  $new_field = array(
    'type' =&gt; 'decimal',
    'precision' =&gt; 16,
    'scale' =&gt; 2,
    'not null' =&gt; TRUE,
    // etc...
  );

  db_change_field('table_name', 'field_name', 'field_name', $new_field);
}


If your field is a primary key/part of an index, you'll need to manually drop those indicies and recreate them (see the documentation page for a more detailed explanation).