Close, your date comparison is slightly off – user_registered
will be a MySQL datetime, so your string comparison will never evaluate true. Instead, convert it to just the date:
$registered = mysql2date( 'Y-m-d', $user->user_registered );
Now we’re talking:
if ( '2015-10-01' === $registered ) {
// chocks away
}
Update: Here’s a complete snippet that should be less intensive on memory too:
$users = get_users(
array(
'fields' => array( 'ID', 'user_registered' ),
'role' => 'subscriber',
)
);
foreach ( $users as $user ) {
if ( '2015-10-01' === mysql2date( 'Y-m-d', $user->user_registered ) ) {
$u = new WP_User( $user->ID );
// Remove role
$u->remove_role( 'subscriber' );
// Add role
$u->add_role( 'to_be_approved' );
}
}
Code is not tested and you should assume it will be break, so backup, backup, backup. Make sure you have debugging enabled too.