C#DateTime vs SQL Server Date-在存储过程中键入

C#DateTime vs SQL Server Date-在存储过程中键入,c#,sql-server,tsql,C#,Sql Server,Tsql,如果我有一个C#DateTime对象和SQL Server中类型为Date的列(而不是DateTime) 对于从C#接收日期时间的存储过程,除了将C#DateTime作为SQL ServerDateTime传递外,我还有其他选择吗?或者我可以将其传递为date类型吗?在存储过程中定义为date CREATE PROCEDURE dbo.YourProcedure (@FromDate DATE) ..... 从C#开始这样称呼它: 你可以随时使用 获取此实例的日期组件 它仍然返回一个DateT

如果我有一个C#
DateTime
对象和SQL Server中类型为
Date
的列(而不是
DateTime


对于从C#接收日期时间的存储过程,除了将C#
DateTime
作为SQL Server
DateTime
传递外,我还有其他选择吗?或者我可以将其传递为
date
类型吗?

在存储过程中定义为
date

CREATE PROCEDURE dbo.YourProcedure (@FromDate DATE)
.....
从C#开始这样称呼它:

你可以随时使用

获取此实例的日期组件


它仍然返回一个
DateTime
对象,只是将时间设置为00:00:00。或者只使用ToSortDateString方法。。。yourSqlCmd.Parameters[“@FromDate”].Value=yourDotNetDateTime.ToSortDateString()@fabricio:除非必须,否则不要将日期转换为字符串!这是一个非常糟糕的主意,会导致日期/语言设置等问题-如果很容易避免,就不要这样做!请注意,C#DateTime.MinValue超过了SQL Server日期最小值。如果这是一个问题,您需要在代码中捕获它,或者使用Date2类型(在SQLServer2008中引入)。@ebpower:实际上,您的说法不太正确。NET
DateTime
超出了SQL Server
DateTime
日期范围-但SQL Server中的
date
也会转到
01/01/0001
(与
DATETIME2
)因此这不应该是问题。
yourSqlCmd.Parameters.Add("@FromDate", SqlDbType.Date);
yourSqlCmd.Parameters["@FromDate"].Value = yourDotNetDateTime.Date;