【发布时间】:2012-05-08 22:07:46
【问题描述】:
尝试将日期传递给存储过程,如下所示:
@dateRegistered = '28/04/2012'
但它一直告诉我:
将数据类型 varchar 转换为日期时出错。
如果我这样做,它会起作用:
@dateRegistered = '04/28/2012'
但这不是我想要使用的格式。
我已运行以下查询来设置格式:
SET DATEFORMAT dmy
为什么它不起作用?
编辑:我是这样做的:
在我的存储过程中,我放了:
SET DATEFORMAT dmy
然后从代码中,我将其传递为:
myCommand.Parameters.Add("@dateRegistered", SqlDbType.Date);
myCommand.Parameters["@dateRegistered"].Value = DateTime.Now.ToString("dd/mm/yyyy");
我将它作为字符串传递以确保即使我的计算机(或服务器)具有不同的日期格式,它也将始终使用 dmy。
编辑编辑:
我将它作为 datetime.now 传递。我发的时候好像是把它转换成默认格式,我读的时候又把它转换回我的电脑格式。不确定这是如何发生的,但它似乎工作正常。
【问题讨论】:
-
“我将它作为字符串传递以确保即使我的计算机(或服务器)具有不同的日期格式,它也将始终使用 dmy。”。 NO, NO, NO 将其作为 DateTime 传递 - .NET 库知道如何将 .NET 的 datetime 概念转换为 SQL 概念,并且不需要处理任何字符串格式或模棱两可。