【发布时间】:2015-08-11 07:27:12
【问题描述】:
C# 的DateTime 是dd.MM.yyyy hh:mm:ss 格式,因此它与SQL Server 使用的不兼容。我希望它采用yyyy-MM-dd hh:mm:ss 格式。有谁知道我该怎么做?
DateTime odt = new DateTime(year, month, day, hour, minute, second);
string odt2= odt.ToString("yyyy-MM-dd hh:mm:ss");
这是我正在使用的存储过程;
ALTER PROCEDURE [dbo].[SELECT_ORDERSTATUS_BY_ORDERDATETIME]
@ORDERDATETIME DateTime
AS
SELECT dbo.OrderTable.Status
FROM dbo.OrderTable
WHERE OrderDateTime = @ORDERDATETIME
这是我的 C# 代码。 ExecuteScalar 返回空值,我认为这是因为 DateTime 根本不匹配。
DateTime odt = new DateTime(year, month, day, hour, minute, second);
SqlConnection con = generateConnectionString();
con.Open();
SqlCommand command = generateCommand("SELECT_ORDERSTATUS_BY_ORDERDATETIME", con);
SqlParameter paramOrderDateTime = new SqlParameter("@ORDERDATETIME", odt);
command.Parameters.Add(paramOrderDateTime);
string status = (string)command.ExecuteScalar();
currentstatusTextbox.Text = status;
con.Close();
【问题讨论】:
-
ADO.NET 完全了解 .NET 的
DateTime和 SQL Server 的datetime数据类型如何工作以及如何在它们之间进行转换。它们都没有格式。您看到的是当这些类型转换为 strings 时会发生什么。避免这些转换并使用 ADO.Net 中的内置支持在它们之间进行转换。 -
日期,在 SQL Server 或 C# 中没有格式,它们是二进制值。如果您在表中使用日期类型的字段并将日期类型的参数传递给参数化查询,那么您将没有问题。如果你这样做,那是因为你自己的代码强制转换为字符串。请贴出相关代码
-
请发布产生问题的查询。否则只能猜测您正在使用字符串连接而不是参数化查询并将日期转换为任意字符串而不是将它们作为参数传递,甚至作为可识别的日期文字
-
如果您的调用没有返回数据,那是因为 没有 没有具有确切日期时间值的数据(一直到第二个)。尝试使用完全相同的日期时间执行该过程,以查看是否返回任何数据
标签: c# sql-server visual-studio datetime format