FirebirdSQL / NETProvider

Firebird ADO.NET Data Provider
https://firebirdsql.org/en/net-provider/
Other
161 stars 66 forks source link

FbParameter does not support DbType.DateTimeOffset #1189

Open ig-sinicyn opened 2 months ago

ig-sinicyn commented 2 months ago

FirebirdSql.Data.FirebirdClient v10.3.1.

I have a Dapper query that attempts to insert a DateTimeOffset value but fails with ArgumentException: "Invalid data type: 27.". Simplified version:

        var connectionString = "...";

        var connection = new FbConnection(connectionString);
        await connection.QueryFirstAsync<DateTimeOffset>(
            "select cast(@value as timestamp) from rdb$database",
            new { Value = DateTimeOffset.UtcNow });

I've debugged the code and it looks like FbParameter.DbType property does not accept DateTimeOffset value.

        var param = new FbParameter()
        {
            DbType = DbType.DateTimeOffset // ArgumentException here
        };

As a workaround I've used DateTime values but it will be much better to have DateTimeOffsert params to work out of the box.

cincuranet commented 2 months ago

If you want to work with time zones, you should use FbZonedDateTime which is more aligned to how time zones are handled in Firebird.