在将DateTime值传递给存储过程时保留格式

RKh*_*RKh 0 c# sql-server sql-server-2005 c#-2.0

我在Web窗体上有一个TextBox服务器控件,比如txtDueDate.我不想使用DateTimePicker但想要使用TextBox本身.用户以dd/mm/yyyy格式输入日期.

将此值传递给SQL Server 2005(Express)存储过程时,我使用类似于:

cmdParameters.AddWithValue("@DueDate", Convert.ToDateTime(txtDueDate.Text));
Run Code Online (Sandbox Code Playgroud)

存储过程具有输入参数来处理此值,并声明为:

@DueDate SmallDateTime
Run Code Online (Sandbox Code Playgroud)

我想知道SQL Server 2005在内部用于存储此日期的默认格式.在我的PC上,Windows XP区域设置被设置为dd/mm/yyyy格式.在通过Management Studio查看记录时,它会正确存储.但我担心将使用此Web应用程序的用户.Windows区域设置可能在其PC上有所不同.

我想确定谁查询数据库,日期以dd/mm/yyyy格式显示.如果有人插入,02/01/2004,那么它不应该成为有效的反向日期,如:01/02/2004.

mar*_*c_s 5

一个DateTimeDateTimeDateTime-它没有"有"(它存储为一个64位长)存储在SQL Server时,任何(面向字符串)格式.如果您已经将参数传递给存储过程DateTime,那么您应该没问题!该值将由SQL Server存储而不更改任何格式 - 因为它没有与之关联的任何格式...

日期以给定字符串格式表示的唯一一点是在SQL Server Management Studio中查看它,或者在例如.NET应用程序中将其转换为字符串格式时.

当您需要以某种方式将字符串表示传递到SQL Server(例如,用于搜索等)时,最强大且可以使用任何区域/语言设置的是ISO-8601日期格式: YYYYMMDD或者(如果您需要时间部分)YYYY-MM-DDTHH:MM:SS(T中间是文字,分隔日期和时间部分)