簡體   English   中英

在SelectCommand中將C#DateTime轉換為T-SQL時間

[英]Converting C# DateTime to T-SQL Time in SelectCommand

我試圖返回一個查詢(在ASP.NET的gridview中),其中WHERE Time> = DateTime.Now.Add(-60)。 WHERE子句給我帶來了無限的困難。

DateTime pastTime = DateTime.Now.Add(-60);    
ds_DB.SelectCommand = "SELECT * FROM [vPurchaseTotals] WHERE [TimeOfTransaction] >=  " + pastTime;

我的問題是使pastTime正確轉換,因此它僅返回較新的數據。 [TimeOfTransaction]是表中的time(7)數據類型。

如何將C#的DateTime解析為SQL Server的Time

在這里,嘗試一下:

using(SqlConnection conn = new SqlConnection(yourConnectionString))
{
    DateTime pastTime = DateTime.Now.Add(-60); 

    ds_DB.SelectCommand = @"SELECT * FROM [vPurchaseTotals]
                            WHERE [TimeOfTransaction] >= @PastTime";

    SqlCommand cm = conn.CreateCommand();
    cm.CommandText = ds_DB.SelectCommand;

    cm.Parameters.Add("@PastTime", SqlDbType.Time).Value = pastTime.TimeOfDay; //For comparison with TSQL TIME type

    try
    {
        conn.Open();
        // Do what you need to do here.
    }
    catch(SqlException e)
    {
        // Handle Exception
    }
    finally
    {
        conn.Close();
    }
}

僅供以后參考,您應該始終將查詢參數化。 最終,它變得更安全,更清潔/更易於閱讀和調整。

編輯:您正在使用SqlDataAdapter類嗎? 那是ds_DB的實例嗎? 我個人將只對查詢使用字符串值,然后實現SqlDataAdapter如下所示:

try
{
     conn.Open();

     using(SqlDataAdapter da = new SqlDataAdapter(cm))
     {
          da.Fill(DataTable dt);
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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