SQL Server 2008 R2 Express を使って試してみました。
これが私が書いたストアド プロシージャの例です:
CREATE PROCEDURE [dbo].[ShowGivenSmallDateTimeValue] @givenSmallDateTime smalldatetime AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Simply return the given small date time value back to sender. SELECT @givenSmallDateTime END
プレ>この手順を実行する C# コードは次のとおりです。
var connectionBuilder = new SqlConnectionStringBuilder(); connectionBuilder.DataSource = "localhost\\sqlexpress"; connectionBuilder.IntegratedSecurity = true; var now = DateTime.UtcNow; using (var connection = new SqlConnection(connectionBuilder.ConnectionString)) using (var command = new SqlCommand()) { command.Connection = connection; command.CommandType = CommandType.StoredProcedure; command.CommandText = "ShowGivenSmallDateTimeValue"; command.Parameters.Add(new SqlParameter("@givenSmallDateTime", SqlDbType.SmallDateTime) { Value = now }); connection.Open(); var result = (DateTime)command.ExecuteScalar(); var difference = result - now; Console.WriteLine("Due to the smalldatetime roundings we have a difference of " + difference + "."); }
プレ>