C# 将字符串转换为SQL Server日期时间,该日期时间应在“中”;yyyy MM dd hh:MM:ss“;格式
C#的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].[
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
数据类型的工作方式以及如何在它们之间进行转换。两者都不是