.net
  • datatable
  • 2009-12-08 144 views 4 likes 
    4

    我使用DataTable.Select上的日期範圍過濾一個DataTable,我的標準字符串是:DataTable.Select日期格式問題

    "CreatedOn >='03/11/2009 00:00:00' AND CreatedOn <='03/11/2009 23:59:00'" 
    

    該過濾器不返回行(即使我可以看到匹配的行未過濾的數據表)。不過,我注意到,如果我改變標準(注意日/月座):

    "CreatedOn >='11/03/2009 00:00:00' AND CreatedOn <='11/03/2009 23:59:00'" 
    

    DataTable中的過濾器如預期。顯然,這似乎是一個日期本地化問題,是否有一種簡單的方法來格式化日期以避免此問題?

    回答

    7

    使用標準的ISO格式的日期時間像這樣(爲11月3日):

    "CreatedOn >='2009-11-03 00:00:00' AND CreatedOn <='2009-11-03 23:59:00'" 
    

    事實上,如果你想在11月3日創建的所有記錄,你應該這樣做,因爲你也想在創造紀錄最後一刻,例如二十三時59分30秒:

    "CreatedOn >='2009-11-03' AND CreatedOn < '2009-11-04'" 
    

    有一個快速參考here

    +0

    完美,謝謝。 – Simon 2009-12-08 10:24:15

    2

    看看你是否可以格式化你日期與 「DD MMM YYYY」,而不是 「MM/DD/YYYY」。

    像這樣

    dt.Select(String.Format("col >= '{0}'", new DateTime(2008, 12, 11).ToString("dd MMM yyyy"))) 
    
    7

    試試這個:

    string selectString = String.Format("CreatedOn >= '{0}' AND CreatedOn <= '{1}'", 
              startDate.ToString(DateTimeFormatInfo.InvariantInfo), 
              endDate.ToString(DateTimeFormatInfo.InvariantInfo)); 
    dt.Select(selectString); 
    
    相關問題