簡體   English   中英

如何將DateTime轉換為字符串?

[英]How do I convert DateTime into string?

我有一個方法需要3個字符串,所以:

public <List> MethodName(string date1, string date2, string number)
{
  //
}

在我的數據庫中date1date2存儲為DateTime ,數字存儲為Int所以我將如何編寫一個基於這三個參數進行搜索的SQL查詢?

我已經像這樣轉換了date1date2

DateTime firstdate = Convert.ToDateTime(date1);
string fdate = firstdate.ToLongDateString();
  DateTime seconddate = Convert.ToDateTime(date1);
string sdate = seconddate .ToLongDateString();

我的SQL查詢是:

  SELECT * From TableName 
  WHERE [Time] > @date1 AND 
  [Time] < @date2 AND [StaffCode] =@StaffCode;

command.Parameters.AddWithValue("@date1", fdate);
command.Parameters.AddWithValue("@date2", sdate );

command.Parameters.AddWithValue("@StaffCode", number);
conn.Open();
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        { get the data ...} 

我確定我的SQL查詢錯誤。

由於數據庫列已被強類型化,因此在將它們綁定到查詢之前,只需確保將C#參數分別鍵入為System.DateTimeintSystem.Int32 )。 然后,您的sql很簡單:

SELECT col1, col2, col3
FROM TableName 
WHERE [Time] > @date1 AND 
      [Time] < @date2 AND [StaffCode] =@StaffCode;

如果允許包含日期,則可以使用BETWEEN,即

WHERE [Time] BETWEEN @date1 AND @date2 
    AND [StaffCode] = @StaffCode

即避免完全將Date轉換為字符串 盡可能嘗試在整個代碼(包括C#和SQL)中始終保持強大的類型系統-這將在轉換過程中省去很多麻煩。 例如,如果可能,請查看是否可以將簽名更改為:

public List<MethodName>(DateTime date1, DateTime date2, int number)
{
  // Bind the DateTimes, not a string!
  command.Parameters.AddWithValue("@date1", date1);
  command.Parameters.AddWithValue("@date2", date2);
  command.Parameters.AddWithValue("@StaffCode", number);

編輯不要使用SELECT * -使用SELECT Col1, Col2, ...

轉換:

             DateTime firstdate = Convert.ToDateTime(date1);
             string fdate = firstdate.ToString("yyyy-MM-dd");

             DateTime firstdate2 = Convert.ToDateTime(date2);
             string fdate2 = firstdate2.ToString("yyyy-MM-dd");

SQL查詢:

           @"SELECT * From TestTable WHERE Time BETWEEN CONVERT(Date,@date1) AND CONVERT(Date,@date2) AND StaffCode=CONVERT(int,@StaffCode)"
           command.Parameters.AddWithValue("@date1", fdate);
           command.Parameters.AddWithValue("@date2", fdate2);
           command.Parameters.AddWithValue("@StaffCode", number);

暫無
暫無

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

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