我想在两年之间获得数据,所以从1月1日到1月1日,这就是我所做的:
public list<a>method(){
DateTime d= new DateTime(DateTime.Now.Year, 01, 1);
DateTime dd= new DateTime(DateTime..Year, 01, 1); <- instead 'now' what is the syntax for next year?
SqlCommand command = new SqlCommand("SELECT TOP 100 ID FROM TableNameWHERE Time Between @Time AND @Time1 ORDER BY Time OFFSET 10 ROWS FETCH NEXT 100 ROWS ONLY", conn);
command.Parameters.AddWithValue("@Time", d);
command.Parameters.AddWithValue("@Time1", dd);
}
答案 0 :(得分:5)
如果你只想要“明年”,那很简单:
// Note: more descriptive variable names than "d" and "dd"
int thisYear = DateTime.Now.Year; // Note this is in the local time zone...
DateTime thisYearStart = new DateTime(thisYear, 1, 1);
DateTime nextYearStart = new DateTime(thisYear + 1, 1, 1);
或者:
int thisYear = DateTime.Now.Year;
DateTime thisYearStart = new DateTime(thisYear, 1, 1);
DateTime nextYearStart = thisYearStart.AddYears(1);
请注意有关时区的评论 - 如果您需要“UTC年”,请使用UtcNow
,在这种情况下,您可能还想指定DateTimeKind
Utc
。
编辑:假设您可以使用包含性开始时间和独占结束时间。这通常是一种很好的工作方式(因为下一个包含的开始时间最终是当前的独占结束时间,并且您不需要担心粒度)。但是,如果您想要包含上限的当前年份的最后一个刻度,您可以使用:
int thisYear = DateTime.Now.Year;
DateTime thisYearStart = new DateTime(thisYear, 1, 1);
DateTime thisYearEnd = thisYearStart.AddYears(1).AddTicks(-1);
答案 1 :(得分:1)
我刚刚在第二个日期修改了你的代码
您的修改代码:
DateTime d = new DateTime(DateTime.Now.Year, 01, 1);
DateTime dd = new DateTime(DateTime.Today.Year + 1 , 01, 1); //Without "Now" you can used today and add +1 which will return the next year integer value
SqlCommand command = new SqlCommand("SELECT TOP 100 ID FROM TableName WHERE Time Between @Time AND @Time1 ORDER BY Time OFFSET 10 ROWS FETCH NEXT 100 ROWS ONLY", conn);
command.Parameters.AddWithValue("@Time", d);
command.Parameters.AddWithValue("@Time1", dd);
或
您也可以使用此方法返回完整日期,例如&#34;年/ mm / dd&#34;。你需要再添加一个陈述来获得年份。
DateTime nextYearDate = DateTime.Now.AddYears(1);
现在在DateTime dd。
中使用了这个日期 DateTime dd = new DateTime(nextYearDate,01,1);