il problema risiede nel fatto che un tipo Date ha una dimensione di 8 byte e cioè paragonabile ad un double. ora basta che un valore decimale sia diverso quando avviene il cast del dato nel formato date ed ecco l'errore. Il date è un formato elapsed time.