gpt4 book ai didi

postgresql - knexjs 按日期和时间获取数据

转载 作者:行者123 更新时间:2023-11-29 14:30:54 31 4
gpt4 key购买 nike

我正在将 knexjs 与 postgrsql 一起使用,并且我正在尝试获取比当前日期和时间早的所有日期和时间的数据。例如我有这个数据

              {
"appointment_id": 1,
"barber_id": 1,
"user_id": 1,
"service_id": 1,
"user_arrive": false,
"created_at": "2018-08-26T13:38:47.342Z",
"updated_at": "2018-08-26T13:38:47.342Z",
"slot": 0,
"time": "09:00",
"date": "2018-08-26"
},
{
"appointment_id": 1,
"barber_id": 1,
"user_id": 1,
"service_id": 1,
"user_arrive": false,
"created_at": "2018-08-26T13:38:47.342Z",
"updated_at": "2018-08-26T13:38:47.342Z",
"slot": 2,
"time": "19:00",
"date": "2018-08-26"
},
{
"appointment_id": 2,
"barber_id": 1,
"user_id": 1,
"service_id": 1,
"user_arrive": false,
"created_at": "2018-08-26T14:19:24.284Z",
"updated_at": "2018-08-26T14:19:24.284Z",
"slot": 0,
"time": "09:00",
"date": "2018-08-27"
}

所以我只想获取第二个和第三个对象,因为现在是 2018-08-2018,时间是:18:20pm。我将我的时间和日期存储为字符串(对我来说很容易使用)

我的问题是

 let date =  moment().format('YYYY-MM-DD')
let time = moment().format('HH:mm')
console.log('date',time , 'user_id',user_id)
return knex('appointments')
.where('user_id',user_id)
.andWhere('date','>',date)
.andWhere('time','>',time)

如果我发送正确的参数,比如 user_id =1,它会给我一个空数组但是如果我删除时间线

        .andWhere('time','>',time)

它只给我第二天(第三个对象),我想要第二个和第三个。

最佳答案

由于您要分别处理日期和时间,因此您需要处理时间小于所需时间且日期晚于所需日期的情况。

在您的查询中,对于晚于所需日期的任何日期,但时间早于所需时间(在那些较晚的日期),您将不适本地排除这些记录。尝试更改:

.andWhere('date','>',date)
.andWhere('time','>',time)

而不是:

.andWhere(function() {
this.where('date','>',date)
.orWhere(function() {
this.where('date','=',date)
.andWhere('time','>',time) })
})

此外,我使用以下子句来帮助调试我在 Knex 中的 SQL 语句,以确保它生成我期望的 SQL,这不是针对你的问题但总是很有用。

.on('query', function(data) {
console.log('debug query:', data);
})

完整示例:

let date =  moment().format('YYYY-MM-DD')
let time = moment().format('HH:mm')
console.log('date',time , 'user_id',user_id)
return knex('appointments')
.where('user_id',user_id)
.andWhere(function() {
this.where('date','>',date)
.orWhere(function() {
this.where('date','=',date)
.andWhere('time','>',time) })
})
.on('query', function(data) {
console.log('debug query:', data);
})

希望这对您有所帮助!

关于postgresql - knexjs 按日期和时间获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027646/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com