簡體   English   中英

將字符串轉換為應為“ yyyy-MM-dd hh:mm:ss”格式的SQL Server DateTime

[英]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或查詢窗口中的文本表示形式。

如果將datetimedatetime2用作列類型,則可以在參數化查詢中 直接使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM