试图日期传递到一个存储过程如下:不能通过日将存储过程
@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概念,并且不需要考虑任何字符串格式或含糊不清的问题。 – 2012-04-28 11:26:01