我真的可以使用一些幫助,根據SQL Date字段查詢數據時遇到問題。當從Web API服務器查詢linq時,數據庫混亂時的UTC
我使用下面的代碼存儲在UTC格式的日期:
objFitCalendarDto.Day = objFitCalendarDto.Day.ToUniversalTime();
該行分配日期插入到通過實體框架的數據庫模型。
現在,我的查詢應該檢索基於日期的行。所以,我應該能夠得到今天,明天,昨天等等的排。
要做到這一點,我使用的方法兩個日期,開始日期和結束日期之間的搜索如下:
DateTime dayBegin = DateTime.Today.Date.AddDays(dayOffset);
DateTime dayEnd = DateTime.Today.Date.AddDays(dayOffset + 1);
dayOffset的目的是指定日期。如果偏移量爲0,那麼我正在搜索今天。如果dayOffset爲1,那麼我正在搜索包含明天日期的行。
現在,因爲我原先存儲的數據是UTC,所以我假設我必須以UTC來搜索它。因此,在執行我的查詢之前,我將日期轉換爲UTC像這樣:
dayBegin = TimeZoneInfo.ConvertTimeToUtc(dayBegin);
dayEnd = TimeZoneInfo.ConvertTimeToUtc(dayEnd);
然後我執行我的查詢,像這樣:
var query = (from f in Db.FitCalendars
where f.FitProgramId == programId &&
f.DayAsDate >= dayBegin && f.DayAsDate < dayEnd
select f);
問題是,這是行不通的。當我在SQL Manager中查看日期時,我有一行「2016-01-26」。但是,它僅從昨天的日期查詢返回。順便說一句,今天是2016-01-26。很明顯,我沒有得到這個UTC概念。任何人都可以看到我在這裏做錯了嗎?我假設如果我將所有內容都存儲爲UTC,然後在查詢之前將查詢的日期轉換爲UTC,那麼一切都應該正常工作。
嘗試manipualte'HttpConfiguration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling'如果這是在網絡API – abatishchev