首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询不返回当月的日期和第一天。

查询不返回当月的日期和第一天。
EN

Stack Overflow用户
提问于 2019-01-30 04:10:19
回答 1查看 50关注 0票数 1

我正在执行一个查询,该查询应该返回从月初到月底之间的值。当记录在月的第一天输入时,记录将不被返回.只有在这个月的第一天之后才返回记录。

云雾恢复数据库中,我发送一个Date()类型的对象,但是当将保存转换为Timestamp时,记录的返回是Timestamp类型,而不是Date()类型。

我已经尝试通过调用getTime()方法来执行查询,但没有返回任何记录。

在银行记录的日期如下:

代码语言:javascript
复制
February 1, 2019 00:00:00 UTC-3

如果我更改了记录与其他记录一起返回的时间。

代码语言:javascript
复制
February 1, 2019 01:00:00 UTC-3

我使用垫-数据报警器 of 角质材料来保存日期,并且这个组件不会只节省时间和日期。

我已经尝试将会议记录设置为每次输入记录的日期,但当我这样做时,将不会返回月份的最后一天的记录。

下面是用于执行查询的代码:

代码语言:javascript
复制
selectedMonth$: BehaviorSubject<{ startOf: Date, endOf: Date }>;
startOfMonth = moment(new Date()).startOf('month').toDate();
endOfMonth = moment(new Date()).endOf('month').toDate();

    this.selectedMonth$ = new BehaviorSubject({
        startOf: this.startOfMonth,
        endOf: this.endOfMonth
    });

    this.transactions$ = this.selectedMonth$.pipe(
        switchMap(dateSelected => this._angularFirestore.collection(collectionRef, ref =>
            ref.where('dueDate', '>', dateSelected.startOf)
                .where('dueDate', '<', dateSelected.endOf))
            .snapshotChanges()
            .pipe(
                map(actions => {
                    return actions.map(a => {
                        const data = a.payload.doc.data() as any;
                        data.id = a.payload.doc.id;
                        return data;
                    });
                })
            )));

updateSelectedMonth(date: Date): void {
    this.startOfMonth = moment(date).startOf('month').toDate();
    this.endOfMonth = moment(date).endOf('month').toDate();
    this.selectedMonth$.next({ startOf: this.startOfMonth, endOf: this.endOfMonth });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-30 04:36:13

更改:

代码语言:javascript
复制
ref.where('dueDate', '>', dateSelected.startOf)
   .where('dueDate', '<', dateSelected.endOf))

至:

代码语言:javascript
复制
ref.where('dueDate', '>=', dateSelected.startOf)
   .where('dueDate', '<=', dateSelected.endOf))

然后,确实要确保dateSelected.endOf包含该日期的最新可能时刻(23:59:59),或者实际上只是将其设置为0:00的第二天,并且:

代码语言:javascript
复制
ref.where('dueDate', '>=', dateSelected.startOf)
   .where('dueDate', '<', dateSelected.endOf))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54433242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档