根据星期几查询日期范围

时间:2015-04-27 18:08:48

标签: sql date ms-access iif

我正在尝试进行查询,显示当天和前一天的记录,但如果是星期一,则显示整个周末以及当天的记录。

逻辑有效,但我不能让日期范围有效。我可以获得单一的工作日期。

IIf(Weekday(Date())=2,Date()-2,Date())

如果我尝试用这样的范围替换单个日期:

IIf(Weekday(Date())=2,Between Date()-2 And Date(),Between Date()-1 And Date())

Access尝试附加此查询引用的表中的标签,如此。这会导致查询结果为空。

IIf(Weekday(Date())=2,([Table].[Reported Date]) Between Date()-2 And Date(),([Table].[Reported Date]) Between Date()-1 And Date())

我是Access的新手,所以我不太明白发生了什么以及为什么要尝试添加这些标签。

如果我的方法不对,请告诉我。

2 个答案:

答案 0 :(得分:0)

<value> between <lower bound> and <upper bound> 的语法是:

Between Date()-2 And Date()

所以这不是一个有效的表达式:

YourColumn between Date()-2 and Date()

尝试类似:

between

或者,没有Date()-2 <= YourColumn and YourColumn <= Date()

void printGivenLevel(struct node* root, int level){
   if(root == NULL)
      return;
   if(level == 1)
      printf("%d ", root->data);
   else if (level > 1)
   {
      printGivenLevel(root->left, level-1);
      printGivenLevel(root->right, level-1);
   }
}

答案 1 :(得分:0)

您可以使用DATEPART()来获取星期几。例如 - 星期一被认为是2。

DatePart函数使用1-7,星期日为1.

离。

声明你的变量并使用DATEPART(w,GETDATE())。

一旦你有了这个,你可以使用你的条件:

var allCatsResult = [{"id":1},{"id":2}, {"id":3}, ... ];

var catsArray = [1, 2] // Array of ids from allCatsResult 
var result = [
                {"id":1, selectedCategories:[{"id":1},{"id":2}]},
                {"id":2, selectedCategories:[{"id":4},{"id":5}]},
                ... 
             ];

for (var i = 0; i < results.length; i++) {
    var tmp = allCatsResult; // tried to add function form here didn't work
    for (var k = 0; k < results[i].selectedCategories.length; k++) {
        var index = catsArray.indexOf(results[i].selectedCategories[k].category_id);        
        if(index !== -1) {
            tmp[index].ticked =  true;
        }
    }               
    results[i].categories = tmp;
}