我想在一個數據表上做出選擇語句來獲取我想要的日期範圍內的行。我對此很陌生,我不太明白這個select語句是如何工作的。我試圖寫這個,但不工作。你能在這裏給我一隻手嗎?我堅持c#datatable選擇語句日期
foundRows = dt.Select("DATE1 <= '" + date1+ "' AND DATE2 >= '" + date1+ '"');
我想在一個數據表上做出選擇語句來獲取我想要的日期範圍內的行。我對此很陌生,我不太明白這個select語句是如何工作的。我試圖寫這個,但不工作。你能在這裏給我一隻手嗎?我堅持c#datatable選擇語句日期
foundRows = dt.Select("DATE1 <= '" + date1+ "' AND DATE2 >= '" + date1+ '"');
除了與#包裝日期,如果DATE1是一個DateTime,而不是一個字符串,你需要使用的ToString(您日期格式),以獲得正確的SQL語句。對於調試,如果首先創建一個包含過濾器的字符串,則使其更容易,然後使用該字符串進行選擇。然後你可以查看字符串並在查詢生成器中使用它來驗證你的sql。
這是我測試過的最佳最佳搜索標準。 你不得不約會。
FROM_DATE = 12/01/2012 TO_DATE = 2012年12月31日
和你的DataTable中列在你的應用。 (在我的代碼'日期')
你的Select語句就是這樣。
DataRow[] rows = newTable.Select("date >= #" + from_date + "# AND date <= #" + to_date + "#");
在SSIS腳本組件中使用它。我剛剛使用了包含日期周圍「#」的上面的示例。我也轉換每個字符串。這工作完美。
以防萬一你想知道如何在SSIS中設置它: 首先有一個數據流使用記錄集目標和Object變量來存儲記錄集。
在我的腳本中,我包含變量爲只讀。
在主類...
public class ScriptMain : UserComponent
{
OleDbDataAdapter a = new OleDbDataAdapter();
System.Data.DataTable AwardedVacTable = new System.Data.DataTable();
...
...
然後在預執行...
public override void PreExecute()
{
base.PreExecute();
a.Fill(AwardedVacTable, Variables.rsAwardedVac);
...
...
然後在自定義方法訪問的數據表...
String dtFilter = "EmployeeID = " + empId.ToString() + " AND (#" + Convert.ToString(StartDate) "# <= EndDate AND #" + Convert.ToString(StartDate) + "# >= StartDate" + " OR #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# >= StartDate AND #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# <= EndDate)";
DataRow[] Overlaps = AwardedVacTable.Select(dtFilter);
expression =「Date>#2015-1-1#」; DataRow [] foundRows = table.Select(expression); 與 select * from tablename where Date>'2015-1-1'
好的我明白了。字符串測試= date1.ToString(「MM/dd/yyyy」); DataRow [] foundRows; foundRows = dt.Select(「DATE1 <='#」+ testing +「#'AND DATE2> ='#」+ testing +「#'」); 十進制值1 = System.Convert.ToDecimal(foundRows [0] [0]); –
如果select不包含anythin,會發生什麼情況。恩。日期是否在界限之外? –