如何在两个日期之间获取数据

时间:2014-02-14 09:54:40

标签: c# sql

我想在两年之间获得数据,所以从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);
}

2 个答案:

答案 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);