C# 将字符串转换为SQL Server日期时间,该日期时间应在“中”;yyyy MM dd hh:MM:ss“;格式

C# 将字符串转换为SQL Server日期时间,该日期时间应在“中”;yyyy MM dd hh:MM:ss“;格式,c#,sql-server,visual-studio,datetime,format,C#,Sql Server,Visual Studio,Datetime,Format,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].[

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();
SQLServer将值作为二进制文件保存。它没有任何格式概念。您在SSMS或查询窗口中看到的只是它们的文本表示

如果使用或作为列类型,则可以在列中直接使用
odt

在您的

据我所知,您没有将存储过程设置为
StoredProcedure
。如果您的
状态
列映射为字符串,并且所有其他事情都正常,那么这应该可以工作

using(SqlConnection con = generateConnectionString())
using(var command = con.CreateCommand())
{
    command.CommandText = "SELECT_ORDERSTATUS_BY_ORDERDATETIME";
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@ORDERDATETIME", SqlDbType.DateTime).Value = odt;

    con.Open();
    string status = (string)command.ExecuteScalar();
}
SQLServer将值作为二进制文件保存。它没有任何格式概念。您在SSMS或查询窗口中看到的只是它们的文本表示

如果使用或作为列类型,则可以在列中直接使用
odt

在您的

据我所知,您没有将存储过程设置为
StoredProcedure
。如果您的
状态
列映射为字符串,并且所有其他事情都正常,那么这应该可以工作

using(SqlConnection con = generateConnectionString())
using(var command = con.CreateCommand())
{
    command.CommandText = "SELECT_ORDERSTATUS_BY_ORDERDATETIME";
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@ORDERDATETIME", SqlDbType.DateTime).Value = odt;

    con.Open();
    string status = (string)command.ExecuteScalar();
}
SQLServer将值作为二进制文件保存。它没有任何格式概念。您在SSMS或查询窗口中看到的只是它们的文本表示

如果使用或作为列类型,则可以在列中直接使用
odt

在您的

据我所知,您没有将存储过程设置为
StoredProcedure
。如果您的
状态
列映射为字符串,并且所有其他事情都正常,那么这应该可以工作

using(SqlConnection con = generateConnectionString())
using(var command = con.CreateCommand())
{
    command.CommandText = "SELECT_ORDERSTATUS_BY_ORDERDATETIME";
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@ORDERDATETIME", SqlDbType.DateTime).Value = odt;

    con.Open();
    string status = (string)command.ExecuteScalar();
}
SQLServer将值作为二进制文件保存。它没有任何格式概念。您在SSMS或查询窗口中看到的只是它们的文本表示

如果使用或作为列类型,则可以在列中直接使用
odt

在您的

据我所知,您没有将存储过程设置为
StoredProcedure
。如果您的
状态
列映射为字符串,并且所有其他事情都正常,那么这应该可以工作

using(SqlConnection con = generateConnectionString())
using(var command = con.CreateCommand())
{
    command.CommandText = "SELECT_ORDERSTATUS_BY_ORDERDATETIME";
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@ORDERDATETIME", SqlDbType.DateTime).Value = odt;

    con.Open();
    string status = (string)command.ExecuteScalar();
}

请参见ADO.NET完全了解.NET的
DateTime
和SQL Server的
DateTime
数据类型的工作方式以及如何在它们之间进行转换。它们都没有格式。您看到的是当这些类型转换为字符串时会发生什么。避免这些转换,并使用ADO.Net中的内置支持在它们之间进行转换。SQL Server或C#中的日期都没有格式,它们是二进制值。如果在表中使用日期类型的字段,并将日期类型的参数传递给参数化查询,则不会有问题。如果您这样做,那是因为您自己的代码强制转换为字符串。请发布相关代码请发布产生问题的查询。否则,人们只能猜测您正在使用字符串连接而不是参数化查询,并将日期转换为任意字符串而不是将其作为参数传递,或者甚至作为可识别的日期文字。如果您的调用不返回任何数据,这是因为没有具有确切日期时间值的数据(一直到第二个)。请尝试使用完全相同的日期时间执行该过程,以查看是否返回了任何数据请参见ADO.NET完全了解.NET的
datetime
和SQL Server的
datetime
数据类型的工作方式以及如何在它们之间进行转换。它们都没有格式。您看到的是当这些类型转换为字符串时会发生什么。避免这些转换,并使用ADO.Net中的内置支持在它们之间进行转换。SQL Server或C#中的日期都没有格式,它们是二进制值。如果在表中使用日期类型的字段,并将日期类型的参数传递给参数化查询,则不会有问题。如果您这样做,那是因为您自己的代码强制转换为字符串。请发布相关代码请发布产生问题的查询。否则,人们只能猜测您正在使用字符串连接而不是参数化查询,并将日期转换为任意字符串而不是将其作为参数传递,或者甚至作为可识别的日期文字。如果您的调用不返回任何数据,这是因为没有具有确切日期时间值的数据(一直到第二个)。请尝试使用完全相同的日期时间执行该过程,以查看是否返回了任何数据请参见ADO.NET完全了解.NET的
datetime
和SQL Server的
datetime
数据类型的工作方式以及如何在它们之间进行转换。它们都没有格式。您看到的是当这些类型转换为字符串时会发生什么。避免这些转换,并使用ADO.Net中的内置支持在它们之间进行转换。SQL Server或C#中的日期都没有格式,它们是二进制值。如果在表中使用日期类型的字段,并将日期类型的参数传递给参数化查询,则不会有问题。如果您这样做,那是因为您自己的代码强制转换为字符串。请发布相关代码请发布产生问题的查询。否则,人们只能猜测您正在使用字符串连接而不是参数化查询,并将日期转换为任意字符串而不是将其作为参数传递,或者甚至作为可识别的日期文字。如果您的调用不返回任何数据,这是因为没有具有确切日期时间值的数据(一直到第二个)。请尝试使用完全相同的日期时间执行该过程,以查看是否返回了任何数据请参见ADO.NET完全了解.NET的
datetime
和SQL Server的
datetime
数据类型的工作方式以及如何在它们之间进行转换。两者都不是