[英]how to convert MM/dd/YYYY hh:mm:ss AM to YYYY-MM-dd datetime format by linq?
[英]Convert string to SQL Server DateTime which should be in “yyyy-MM-dd hh:mm:ss” 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].[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();
SQL Server將DateTime
值保留為二進制。 它沒有任何格式概念。 您所看到的只是它們在SSMS或查詢窗口中的文本表示形式。
如果將datetime
或datetime2
用作列類型,則可以在參數化查詢中 直接使用odt
值。
編輯后 :
據我所知,您沒有將CommandType
設置為StoredProcedure
。 如果您的“ Status
列是用字符串映射的,而其他所有內容都正確,則應該可以;
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.