why the current date do not update

From the codex:

<?php $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); ?>

In your exampe ‘ CURDATE()’ is simply a string, not a MySQL function (or something else).

The correct syntax for php’s date() is:

date( [format], [timestamp] )

Try this:

$this->wpdb->update(  
            'wp_competitors',  
            array(  
                'results' => $tips,  // json  
                'update_time' => date( 'Y-m-d H:i:s', time() )
            ),  
            array( 'token' => $token ),  
            array(  
                '%s',   // value1  
                '%d'    // value2  
            ),  
            array( '%d' )  
        );

Better than php’s date() is WordPress current_time():

current_time( 'mysql' )

This will return something similiar to 2012-12-02 23:00:08