[英]Different datetime format returns wrong result set in EF Core and LINQ. DateTime.ParseExact does not work
我有一個 ASP.NET Core MVC 應用程序,其文化設置為en-GB
,使用日期時間格式dd/mm/yyyy
。
我在用:
datetime2
但是,對於我的一個查詢,在通過 EF Core 查詢時,我需要日期格式為yyyy-mm-dd
。
var xyx = db.zyz
.Where(x => x.date >= startdate && x.date<= enddate)
......
上面的查詢即使按照條件在zyz表中有一條記錄,也無法返回結果集。
我認為只有當 startdate 和 enddate 相同時才會發生這種情況。
例如,假設 zyz 的記錄日期為2020-04-19
詢問
var dt = DateTime.ParseExact("20200419","yyyyMMdd",CultureInfo.InvariantCulture);
var xyx = db.zyz
.Where(x=>x.date >= dt && x.date<= dt)
......
這無法獲取任何行。 它返回 0 行。
我認為這是因為日期時間格式。
db 中 zyz 中的日期字段格式2020-19-04 00:00:00.0000000
想到兩個問題:
ParseExact
和其他方法將日期解析為我想要的格式時。 這沒用。 我總是以dd/mm/yyyy
格式獲取日期。我嘗試過解析日期:
var dt = DateTime.ParseExact("20200415","yyyyMMdd",CultureInfo.InvariantCulture);
DateTime theTime = DateTime.ParseExact("20200415",
"yyyyMMdd",
CultureInfo.InvariantCulture,
DateTimeStyles.None);
var dts = DateTime.ParseExact("20200415", "yyyyMMdd",new CultureInfo("en-ZA"));
上述查詢始終返回格式為19/04/2020 00:00:00
的日期
據我了解,由於 datetime 只是一種數據類型,因此查詢不應該獨立於 datetime 格式並返回數據而不考慮 datetime 格式嗎?
大家好,查詢本身是錯誤的。
什么問題:
如果開始日期和結束日期相同:
var xyx = db.zyz
.Where(x => x.date >= startdate && x.date<= enddate)
......
我正在發送:
2020-04-19 00:00:00 雙方
我不得不發送:
2020-04-19 00:00:00
- 開始日期2020-04-19 11:59:00
- 結束日期
正如Ivan Stoev和Stefano Balzarotti在評論中指出的那樣。
寫了這個答案,因為它清楚地表明 datetime 是一種類型,並且沒有Jon Skeet在評論中指出的格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.