Sort matrix blocks by date and limit to 10 entries
Your entry.agendav2 is not an array of elements but a ElementCriteriaModel so you can include both properties in your query 

{% for block in entry.agendav2.limit(10).order('Datum') %}


That's basically it. 

Edit: you can search for entries in the future with 

 Datum('&gt;= ' ~ 'now'|date('c')) 


Like stated here https://craftcms.stackexchange.com/a/23697/5557

Edit:

After we discussed the issue in my comments I came up with this solution

{% set matrixBlocks = craft.yourPluginHandle.getSortedMatrixBlocks() %}
{% for matrix in matrixBlocks %}
    ...
    {{ matrix.datum }}
    ...
{% endfor %}


And insert this in your PluginVariable

public function getSortedMatrixBlocks(){
    // the id of your matrix field
    $matrixFieldId = 61;

    // check your database for your matrix field table and insert your Datum field column
    // it will be a string like field_{blockHandle}_{fieldHandle}
    // for me it is
    $matrixFieldDatum = 'field_test_datum';

    // lowercase handle of your field
    $matrixFieldHandle = 'matrixfield';
    $matrixIds = craft()-&gt;db-&gt;createCommand()
        -&gt;select('craft_matrixblocks.id')
        -&gt;from('matrixblocks')
        -&gt;where('craft_matrixblocks.fieldId = :fieldId', ['fieldId' =&gt; $matrixFieldId])
        -&gt;limit(10)
        -&gt;join('matrixcontent_'.$matrixFieldHandle, 'craft_matrixblocks.id = craft_matrixcontent_' . $matrixFieldHandle . '.elementId')
        -&gt;order($matrixFieldDatum . ' ASC')
        -&gt;queryColumn();

    $allMatrixBlocks = [];
    foreach ($matrixIds as $id){
        $allMatrixBlocks[] = craft()-&gt;matrix-&gt;getBlockById($id);
    }

    return $allMatrixBlocks;
}