diff --git a/src/Ydb.Sdk/CHANGELOG.md b/src/Ydb.Sdk/CHANGELOG.md index 87fff2a7..42b794e4 100644 --- a/src/Ydb.Sdk/CHANGELOG.md +++ b/src/Ydb.Sdk/CHANGELOG.md @@ -1,3 +1,4 @@ +- Fixed bug: 'System.DateOnly' is not supported by YdbParameter ([#449](https://github.com/ydb-platform/ydb-dotnet-sdk/issues/449)). - Fixed bug: Unhandled exception. System.Net.Http.HttpIOException ([#452](https://github.com/ydb-platform/ydb-dotnet-sdk/issues/451)). - dev: LogLevel `Warning` -> `Debug` on AttachStream has been cancelled. diff --git a/src/Ydb.Sdk/src/Ado/YdbParameter.cs b/src/Ydb.Sdk/src/Ado/YdbParameter.cs index a0a854f8..f6ede048 100644 --- a/src/Ydb.Sdk/src/Ado/YdbParameter.cs +++ b/src/Ydb.Sdk/src/Ado/YdbParameter.cs @@ -109,6 +109,8 @@ string valueString when DbType is DbType.String or DbType.AnsiString or DbType.A }, DateTimeOffset dateTimeOffset when DbType is DbType.DateTimeOffset or DbType.Object => YdbValue.MakeTimestamp(dateTimeOffset.UtcDateTime), + DateOnly dateOnlyValue when DbType is DbType.Date or DbType.Object => + YdbValue.MakeDate(dateOnlyValue.ToDateTime(TimeOnly.MinValue)), float floatValue => DbType switch { DbType.Single or DbType.Object => YdbValue.MakeFloat(floatValue), diff --git a/src/Ydb.Sdk/tests/Ado/YdbCommandTests.cs b/src/Ydb.Sdk/tests/Ado/YdbCommandTests.cs index eeb200fa..b35c727e 100644 --- a/src/Ydb.Sdk/tests/Ado/YdbCommandTests.cs +++ b/src/Ydb.Sdk/tests/Ado/YdbCommandTests.cs @@ -463,4 +463,18 @@ public async Task Guid_WhenSetUuid_ReturnThisUtf8Uuid(string guid) Assert.Equal(guid.ToLower(), actualGuidText); // Guid.ToString() method represents lowercase } + + [Fact] + public async Task Date_WhenSetDateOnly_ReturnDateTime() + { + await using var ydbConnection = await CreateOpenConnectionAsync(); + var ydbCommand = new YdbCommand(ydbConnection) { CommandText = "SELECT @dateOnly;" }; + ydbCommand.Parameters.AddWithValue("dateOnly", new DateOnly(2002, 2, 24)); + + Assert.Equal(new DateTime(2002, 2, 24), await ydbCommand.ExecuteScalarAsync()); + + ydbCommand.Parameters.Clear(); + ydbCommand.Parameters.AddWithValue("dateOnly", DbType.Date, new DateOnly(2102, 2, 24)); + Assert.Equal(new DateTime(2102, 2, 24), await ydbCommand.ExecuteScalarAsync()); + } }