sql >> Base de Datos >  >> RDS >> PostgreSQL

NHibernate Postgresql Conversión de fecha y hora a hora

¡Lo descubrí!

Aparentemente, la hoja de conversión que vinculó es incorrecto o está desactualizado. Resulta que un objeto System.TimeSpan es lo que se necesita para que Npgsql realice una conversión adecuada a un objeto de "tiempo" de Postgresql. Me parece extraño que intenten convertir algo que representa una diferencia entre dos tiempos en lo que consideramos HH:mm:ss, pero así son las cosas.

En lugar de cambiar el tipo de mi propiedad RunTime de System.DateTime a System.TimeSpan, creé un IUserType personalizado y anulé NullSafeSet para que se parezca a

public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
    var obj = (DateTime)value;

    ((IDbDataParameter) cmd.Parameters[index]).Value = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second);
}