簡體   English   中英

如何使用linq從varchar(32)類型的datetime列中僅獲取Date

[英]How to get only Date from datetime column of type varchar(32) using linq

我在表中有一個列為PSR_LOAD_DATE_TIME,其中包含格式為2016-01-09 14:06:19的值

但是該列的類型為varchar(32)。

我有一個linq查詢,僅將PSR_LOAD_DATE_TIME與特定日期進行比較。 但是它將PSR_LOAD_DATE_TIME與時間進行比較。

其中(t0.PSR_LOAD_DATE_TIME.CompareTo(from_Date)> = 0)&&(t0.PSR_LOAD_DATE_TIME.CompareTo(to_Date)<= 0)

這里from_Date和to_Date變量包含類似2016-01-03的值。

因此,我需要從PSR_LOAD_DATE_TIME中刪除時間部分。

怎么寫Linq查詢呢?

您可以將PSR_LOAD_DATE_TIME中的DateTime表達式解析為真實的DateTime,然后僅使用該DateTime對象的Date部分。

void Main()
{
    List<string> dates = new List<string>();
    dates.Add("2016-01-18 12:05:12");
    string from_Date = "2016-01-16";
    string to_Date = "2016-01-18";

    var date = from d in dates where (DateTime.ParseExact(d, "yyyy-MM-dd HH:mm:ss", null)
       .Date.CompareTo(DateTime.ParseExact(from_Date, "yyyy-MM-dd", null)) >= 0 && 
       DateTime.ParseExact(d, "yyyy-MM-dd HH:mm:ss", null)
       .Date.CompareTo(DateTime.ParseExact(to_Date, "yyyy-MM-dd", null)) <= 0)
       select d;

    foreach(var d in date) {
        Console.WriteLine(d.ToString());
    }
}

我想您使用EF來查詢這一點。

所以你應該嘗試

DbFunctions.TruncateTime

暫無
暫無

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

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