У меня есть следующий SQL сниппет:проблемы преобразования DateTime в C#
WHERE YEAR(wo.audt_created_dttm) >= 2011 - 3 --narrows down to a year
AND YEAR(wo.audt_created_dttm) >= 2006 -- bad data less than 2006
AND wo.audt_created_dttm < DATEADD(mm, 1, CAST(CAST(1 * 3 as varchar) + '/01/' + CAST(2011 as varchar) as DateTime))
, которые я переводил в LINQ к SQL (для целей тестирования в LINQPad), как это:
int year = 2012, quarter = 1;
DateTime timeframe = new DateTime(year, (quarter * 3), 01).AddMonths(1);
where wo.Audt_created_dttm.Value.Year >= year - 3 && wo.Audt_created_dttm.Value.Year >= 2006
&& wo.Audt_created_dttm < timeframe && (s.Id =="NM" || s.Id == "TH") &&
(wo.Clsdt_date ?? new DateTime(3000, 01, 01)) < DateTime.Now
Однако для Фактическое решение Я не хочу конкретно определять год или квартал. Я хочу, чтобы год и квартал были текущими.
За год, я пытался сделать это:
DateTime timeframe = new DateTime(timeframe.Year, (quarter * 3), 01).AddMonths(1);
но компилятор не нравится, что на всех. Тогда я пробовал это:
DateTime setYear = new DateTime();
DateTime timeframe = new DateTime(setYear.Year, (quarter * 3), 01).AddMonths(1)
, который тоже не работает. Я не понимаю, как сделать год или квартал, и был бы признателен за любые советы
Как именно это не сработало? Что это сделал? – svick
Пробовал свой код, кажется, работает без ошибок компиляции. – Magnus
@ svick - Он отлично работал, если я сохранил данные за год и квартал и установил их на определенный год и квартал. Тем не менее, мне не нужен конкретный год или квартал. Я только специально установил их, чтобы проверить свой LINQ to SQL-код в LINQPad, чтобы обеспечить корректность моего вывода. Оба таймфрейма.Год и setYear.Year дал мне «полевой инициализатор не может ссылаться на нестатическое поле, метод или свойство« бла, бла, бла ». Я нашел ответ. –