[英]DateTime conversion problems in C#
我有以下SQL代码段:
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 to 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)
那也不起作用。 我对年度或季度的操作一无所知,并希望获得任何建议
我希望年份和季度是当前的。
要获取当前季度的第一天,您可以使用以下代码:
var now = DateTime.Now;
var quarter = (now.Month - 1)/3;
var timeframe = new DateTime(now.Year, 3*quarter + 1, 1);
timeframe
将包含2012-04-01、2012-07-01、2012-10-01等,具体取决于当前日期。
您要今年吗?
DateTime.Today.Year
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.